как убрать запятую с конца строки? - PullRequest
103 голосов
/ 29 октября 2009

Я хочу убрать запятую с конца строки. Как сейчас я использую

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

, но это удаляет только последний символ строки. Я добавляю строку динамически, поэтому иногда в конце строки нет запятой. Как я могу заставить PHP удалить запятую с конца строки, если она есть в конце?

Ответы [ 10 ]

271 голосов
/ 29 октября 2009
$string = rtrim($string, ',');

Документы для rtrim здесь

35 голосов
/ 29 октября 2009

Это классический вопрос с двумя решениями. Если вы хотите удалить только одну запятую, которая может быть, а может и не быть, используйте:

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

Если вы хотите удалить все запятые в конце строки, используйте более простое:

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

Функция rtrim (и соответствующий ltrim для левой обрезки) очень полезна, так как вы можете указать диапазон символов для удаления, т.е. удалить запятые и конечные пробелы, которые вы напишите:

$string = rtrim($string, ", \t\n");
11 голосов
/ 29 октября 2009

я полагаю, что вы объединяете что-то в цикле, например

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

гораздо лучше собрать элементы в массив, а затем соединить его с нужным разделителем

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

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

это решает проблемы с конечным и двойным разделителями, которые обычно возникают при конкатенации

4 голосов
/ 01 февраля 2018

Если вы объединяете что-то в цикле, вы также можете сделать это следующим образом:

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}
2 голосов
/ 29 октября 2009

взгляните на функцию rtrim

rtrim ($string , ",");

вышеприведенная строка удалит символ, если последний символ - запятая

1 голос
/ 29 октября 2009

rtrim ($ string, ","); это самый простой способ.

1 голос
/ 29 октября 2009
if(substr($str, -1, 1) == ',') {

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

}

http://php.net/manual/en/function.substr.php

0 голосов
/ 27 июня 2014

У меня было досадное "невидимое" пространство в конце моей строки, и я должен был сделать это

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

Но решение выше, лучше

 $update_sql=rtrim($update_sql,', ');
0 голосов
/ 29 октября 2009

Простое регулярное выражение будет работать

$string = preg_replace("/,$/", "", $string)
0 голосов
/ 29 октября 2009

Предшествовать этому с:

if(substr($string, -1)==",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...