Удалить запятую из строки в php
Предположим, что значение
1,2,,4,5,6
- Для этого я могу использовать str_replace(",,",",",$mystring)
получить 1,2,4,5,6
Как получить такие значения, как 2,4,5,6
от ,2,,4,5,6
где две или более последовательных запятых заменяются одной запятой, и если запятая ставится перед любым значением, она игнорируется. Если есть только запятые типа ,,,,,,
тогда возвращается пустое значение.
как это сделать в php.
4 ответа
Вы можете explode
сначала строка через запятую, а затем implode
после фильтрации пустых строк.
$val=",2,,4,5,6";
$parts=explode(",",$val);
$parts=array_filter($parts);
echo(implode(",",$parts));
Обратите внимание, что это также будет фильтровать 0
от ваших ценностей. Если вы хотите сохранить нули, обратитесь к этому вопросу
Вы можете сделать то, что вы сделали с вашей первой проблемой...
Затем используйте trim(), чтобы удалить ненужные запятые в начале или конце строки.
$mystring = ',2,,4,5,6';
$output = str_replace(',,', ',', $mystring);
echo trim($output, ',');
//Output will be: 2,4,5,6
// Variable Declaration for String
$str = "1,2,,4,5,6";
// Create Array Out of the String, The comma ',' is the delimiter
// This would output
// [ 1 => 1, 2 => 2, 3 => '', 4 => 4, 5 => 5, 6 => 6 ]
$explodedStr = explode(',', $str);
// Filter Array And Remove The empty element which in this case
// 3 => ''
$filteredArray = array_filter( $explodedStr );
// Convert Array into String with comma delimiter
$formattedString = implode(',', $filteredArray);
- Обрежьте все запятые в начале и в конце строки, потому что они не являются полезными разделителями.
- Сопоставьте одну или несколько запятых, которые стоят сразу после запятой.
В моем шаблоне я сопоставляю запятую, а затем забываю ее с помощью\K
, затем сопоставьте одну или несколько запятых. Затем эти лишние запятые заменяются пустой строкой.
Код: (Демо)
$string = ',1,2,,4,5,,,,6,,,,';
echo preg_replace('/,\K,+/', '', trim($string, ','));
// 1,2,4,5,6