как удалить запятую с конца строки?


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

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

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

10 95
php

10 ответов:

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

документы на rtrim здесь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

rtrim ($string , ",");

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

if(substr($str, -1, 1) == ',') {

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

}

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

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

предшествует этому с:

if(substr($string, -1)==",")

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

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

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

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

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

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