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

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

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

гораздо лучше собирать элементы в массиве, а затем присоединяться к нему с помощью разделителя, который вам нужен.

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

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

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

Ответ 4

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

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

Ответ 5

посмотрите на функцию rtrim

rtrim ($string , ",");

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

Ответ 7

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

Ответ 8

Предположим, что с помощью

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

Ответ 9

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

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

Ответ 10

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

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

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

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