як я можу видалити кому з кінця рядка?


119

Я хочу видалити кому з кінця рядка. Як це зараз я використовую

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

але це видаляє лише останній символ рядка. Я додаю рядок динамічно, тому іноді в кінці рядка немає коми. Як я можу PHP видалити кому з кінця рядка, якщо в кінці є одна?

Відповіді:



38

Це класичне питання з двома рішеннями. Якщо ви хочете видалити рівно одну кому, яка може бути, а може і не бути, скористайтеся:

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

Якщо ви хочете видалити всі коми з кінця рядка, використовуйте простіше:

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

Функція rtrim (і відповідна ltrim для лівого обрізки) дуже корисна, оскільки ви можете вказати діапазон символів, який потрібно видалити, тобто видалити коми і пробіли пробілів, які ви б написали:

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

Дякую за детальне пояснення. Це прояснює речі!
zeckdude

12

я здогадуюсь, що ти об'єднуєш щось у циклі, наприклад

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

Набагато краще - зібрати елементи в масив, а потім з'єднати їх з потрібним роздільником

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

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

це вирішує проблеми із затримкою та подвійним роздільником, які зазвичай трапляються при конкатенації


Гарна пропозиція. Однак не всі конкатенації можуть відбуватися в PHP. У моєму випадку я надсилаю зв'язаний рядок Javascript для PHP для розблокування.
Sablefoste

4

Якщо ви об'єднаєте щось у циклі, ви можете зробити це і таким чином:

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

2

подивіться на функцію rtrim

rtrim ($string , ",");

вищевказаний рядок видалить знак, якщо останній символ - це кома



1

Простий регулярний вираз спрацював би

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

2
Розробник використовує регулярний вираз для вирішення проблеми, і тепер у нього є дві проблеми.
Сігурд


1

Я мав нудний «невидимий» простір в кінці своєї струни і повинен був це зробити

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

Але рішення вище - краще

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.