làm cách nào để xóa dấu phẩy ở cuối chuỗi?


119

Tôi muốn xóa dấu phẩy ở cuối chuỗi. Như bây giờ tôi đang sử dụng

$string = substr($string,0,-1);

nhưng điều đó chỉ loại bỏ ký tự cuối cùng của chuỗi. Tôi đang thêm chuỗi động, vì vậy đôi khi không có dấu phẩy ở cuối chuỗi. Làm cách nào để PHP xóa dấu phẩy ở cuối chuỗi nếu có dấu phẩy ở cuối chuỗi?

Câu trả lời:


302
$string = rtrim($string, ',');

Tài liệu cho rtrimđây


27
Thao tác này sẽ loại bỏ nhiều dấu phẩy: "a, b ,,," sẽ trở thành "a, b". Cho dù đó là những gì OP muốn hay không tôi không biết ...
Greg

1
Cảm ơn bạn, tôi đã làm điều này với substr, strlen, ... tất cả cuộc sống của tôi
Farhad

38

Đây là một câu hỏi kinh điển, có hai giải pháp. Nếu bạn muốn xóa chính xác một dấu phẩy, dấu phẩy có thể có hoặc không, hãy sử dụng:

if (substr($string, -1, 1) == ',')
{
  $string = substr($string, 0, -1);
}

Nếu bạn muốn xóa tất cả các dấu phẩy ở cuối dòng, hãy sử dụng cách đơn giản hơn:

$string = rtrim($string, ',');

Hàm rtrim (và ltrim tương ứng cho phần cắt bên trái) rất hữu ích vì bạn có thể chỉ định một dải ký tự cần xóa, tức là để xóa dấu phẩy và khoảng trắng ở cuối mà bạn sẽ viết:

$string = rtrim($string, ", \t\n");

Cảm ơn bạn đã giải thích chi tiết đó. Điều đó làm rõ mọi thứ!
zeckdude

12

tôi đoán bạn đang nối một cái gì đó trong vòng lặp, như

foreach($a as $b)
  $string .= $b . ',';

tốt hơn nhiều là thu thập các mục trong một mảng và sau đó nối nó với dấu phân cách bạn cần

foreach($a as $b)
  $result[] = $b;

$result = implode(',', $result);

điều này giải quyết các vấn đề về dấu và dấu phân cách kép thường xảy ra với phép nối


Gợi ý tốt. Tuy nhiên, không phải tất cả các phép nối đều có thể diễn ra trong PHP. Trong trường hợp của tôi, tôi đang gửi một chuỗi được nối Javascript cho PHP để giải nén.
Sablefoste

4

Nếu bạn đang nối một cái gì đó trong vòng lặp, bạn cũng có thể thực hiện theo cách này:

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}

2

hãy xem hàm rtrim

rtrim ($string , ",");

dòng trên sẽ xóa một ký tự nếu ký tự cuối cùng là dấu phẩy



1

Một biểu thức chính quy đơn giản sẽ hoạt động

$string = preg_replace("/,$/", "", $string)

2
Nhà phát triển sử dụng biểu thức chính quy để giải quyết một vấn đề và bây giờ anh ta gặp hai vấn đề.
Sigurd

1

rtrim ($ string, ","); là cách dễ nhất.


1

Tôi đã có một khoảng trống "vô hình" khó chịu ở cuối chuỗi của mình và phải làm điều này

 $update_sql=rtrim(trim($update_sql),',');

Nhưng một giải pháp ở trên tốt hơn

 $update_sql=rtrim($update_sql,', ');

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.