как удалить запятую с конца строки?
Я хочу удалить запятую с конца строки. Как это сейчас я использую
$string = substr($string,0,-1);
но это удаляет только последний символ строки. Я добавляю строку динамически, поэтому иногда в конце строки нет запятой. Как PHP может удалить запятую с конца строки, если она есть в конце?
10 ответов
Это классический вопрос, с двумя решениями. Если вы хотите удалить ровно одну запятую, которой может быть или не быть, используйте:
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 , ",");
в строке удалить символ при последней случайной запятой
у меня было досадное "невидимое" пространство в конце моей строки, и мне пришлось это сделать
$update_sql=rtrim(trim($update_sql),',');
но решение выше лучше
$update_sql=rtrim($update_sql,', ');