Làm cách nào để xóa dấu phẩy cuối cùng khỏi một chuỗi bằng PHP?


96

Tôi đang sử dụng một vòng lặp để lấy các giá trị từ cơ sở dữ liệu của mình và kết quả của tôi như sau:

'name', 'name2', 'name3',

Và tôi muốn nó như thế này:

'name', 'name2', 'name3'

Tôi muốn xóa dấu phẩy sau giá trị cuối cùng của vòng lặp.


11
Bạn nên đặt implodecác giá trị ban đầu bằng dấu phẩy, không lặp lại chúng và xóa nội dung ở cuối.
moonwave99

Câu trả lời:


217

Sử dụng rtrimchức năng:

rtrim($my_string, ',');

Tham số thứ hai cho biết ký tự sẽ bị xóa.


26
Ngoài ra, hãy đảm bảo rằng bạn không có bất kỳ khoảng trống nào sau dấu phẩy, nếu không điều này sẽ không thành công hoặc làm rtrim (trim ($ my_string), ',').
Foxhoundn

Câu trả lời xuất sắc!
DiChrist

@Foxhoundn Bình luận của bạn là vị cứu tinh. Cảm ơn bro
Jaydeep Goswami

1
Điều này không hoạt động trong một vòng lặp thêm dấu phẩy ở cuối vì nó sẽ xóa tất cả các dấu phẩy.
LizardKG

25

Thử:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');

1
Tôi đã thử nó, nhưng hiển thị của nó như thế này: 'name''name2''name3' Đây không phải là những gì tôi cần
JoJo

Theo ví dụ của bạn, bạn chỉ cần áp dụng chức năng này trên kết quả cuối cùng chứ không phải trên từng giá trị riêng biệt.
Boaz

Tôi đang sử dụng vòng lặp vì vậy làm thế nào tôi có thể biết kết quả cuối cùng của vòng lặp?
JoJo

Kết quả cuối cùng của vòng lặp được lưu trữ trong một biến, phải không? Vì vậy, hãy áp dụng rtrimlời gọi cho biến đó. Nếu bạn vẫn gặp khó khăn, hãy cập nhật câu hỏi của bạn bằng mã tạo vòng lặp.
Boaz

Tôi đặc biệt thích câu trả lời này, bởi vì một trong những vấn đề với rất nhiều hàm tích hợp sẵn trong PHP, đó là một số trong số chúng bị vô hiệu và một số trong số chúng có kiểu trả về. Trong trường hợp này, tôi đã cố gắng chỉ viết rtrim($string, ','), khi nào tôi nên viết$string = rtrim($string, ',');
Alec

14

Hãy thử mã dưới đây:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

Sử dụng mã này để xóa ký tự cuối cùng của chuỗi.


10

Bạn có thể sử dụng substrchức năng để loại bỏ điều này.

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);

7

rtrim chức năng

rtrim($my_string,',');

Tham số thứ hai chỉ ra rằng dấu phẩy được xóa từ phía bên phải.



4

Nó sẽ ảnh hưởng đến tập lệnh của bạn nếu bạn làm việc với văn bản nhiều byte mà bạn từ chuỗi con. Nếu đúng như vậy, tôi thực sự khuyên bạn nên bật các hàm mb_ ​​* trong php.ini của bạn hoặc làm điều nàyini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);


2

nó đơn giản như:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');

2

Tốt hơn là sử dụng implode cho mục đích đó. Implode thật dễ dàng và tuyệt vời:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

Đầu ra:

    name1, name2, name3

Không cần thiết phải tạo một mảng trước các giá trị cơ sở dữ liệu đọc. rtrim & substr đều là giải pháp hợp lệ - và tốt -.
Steve Horvath

Vâng, bạn nói đúng nhưng nếu bạn có một mảng này là một giải pháp tiện dụng
khandaniel

1

Bạn có thể sử dụng một trong các kỹ thuật sau để xóa dấu phẩy cuối cùng (,)

Giải pháp 1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

Giải pháp 2:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

Giải pháp 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.