Как удалить последнюю запятую из строки с помощью PHP?

96

Я использую цикл для получения значений из моей базы данных, и мой результат такой:

'name', 'name2', 'name3',

А я хочу вот так:

'name', 'name2', 'name3'

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

JoJo
источник
11
Вы должны указать implodeсвои исходные значения через запятые, а не перебирать их и удалять в конце.
moonwave99

Ответы:

217

Используйте rtrimфункцию:

rtrim($my_string, ',');

Второй параметр указывает удаляемый символ.

Ander2
источник
26
Также убедитесь, что у вас нет конечного пробела после запятой, иначе это не удастся, или выполните rtrim (trim ($ my_string), ',').
Foxhoundn
Отличный ответ!
DiChrist
@Foxhoundn Ваш комментарий - спаситель. Спасибо, брат
Джайдип Госвами
1
Это не работает в цикле, который добавляет запятую в конце, поскольку он удаляет все запятые.
LizardKG
25

Пытаться:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');
Вооз
источник
1
Я уже пробовал, но это выглядит так: 'name''name2''name3' Это не то, что мне нужно
JoJo
В вашем примере вам нужно применить эту функцию только к окончательному результату, а не к каждому значению отдельно.
Boaz
Я использую цикл, так как я могу узнать окончательный результат цикла?
JoJo
Конечный результат цикла сохраняется в переменной, верно? Итак, примените rtrimвызов к этой переменной. Если у вас все еще возникают проблемы, обновите свой вопрос кодом, который создает цикл.
Боаз,
Мне особенно нравится этот ответ, потому что одна из проблем с множеством встроенных функций PHP заключается в том, что некоторые из них недействительны, а некоторые из них имеют возвращаемые типы. В этом случае я пытался просто написать rtrim($string, ','), тогда как я должен был писать$string = rtrim($string, ',');
Алек,
14

Попробуйте следующий код:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

Используйте этот код, чтобы удалить последний символ строки.

ВиджейS91
источник
10

Вы можете использовать substrфункцию, чтобы удалить это.

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);
Энни Чендель
источник
7

rtrim функция

rtrim($my_string,',');

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

Джитендра Тьяги
источник
5

использовать rtrim()

rtrim($string,',');
Санкалп Мишра
источник
4

Это повлияет на ваш скрипт, если вы работаете с многобайтовым текстом, из которого вы подстроку. Если это так, я настоятельно рекомендую включить функции mb_ * в вашем php.ini или сделать этоini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);

Ашок Хот
источник
2

это так просто, как:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');
Кетан Савалия
источник
2

Для этого лучше использовать имплод. Implode - это просто и здорово:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

Вывод:

    name1, name2, name3
Ханданиэль
источник
Нет необходимости сначала сгенерировать массив из значений, считанных базой данных. rtrim и substr - правильные и хорошие решения.
Стив Хорват,
Что ж, вы правы, но если у вас есть массив, это удобное решение
khandaniel
1

Вы можете использовать один из следующих способов, чтобы удалить последнюю запятую (,)

Решение1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

Решение 2:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

Решение 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Маджба Хабиб
источник
0

Решения для применения во время цикла:

//1 - Using conditional:

$source = array (1,2,3);
$total = count($source);
    
$str = null;
    
for($i=0; $i <= $total; $i++){ 
        
    if($i < $total) {
        $str .= $i.',';
    }
    else {
        $str .= $i;
    }
}
    
echo $str; //0,1,2,3

//2 - Using rtrim:

$source = array (1,2,3);
$total = count($source);

$str = null;

for($i=0; $i <= $total; $i++){ 
    
        $str .= $i.',';
}

$str = substr($str,0,strlen($str)-1);
echo $str; //0,1,2,3
Феллипе Санчес
источник