Удалить запятую из строки в 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);
  1. Обрежьте все запятые в начале и в конце строки, потому что они не являются полезными разделителями.
  2. Сопоставьте одну или несколько запятых, которые стоят сразу после запятой.

В моем шаблоне я сопоставляю запятую, а затем забываю ее с помощью\K, затем сопоставьте одну или несколько запятых. Затем эти лишние запятые заменяются пустой строкой.

Код: (Демо)

      $string = ',1,2,,4,5,,,,6,,,,';
echo preg_replace('/,\K,+/', '', trim($string, ','));
// 1,2,4,5,6
Другие вопросы по тегам