2016-08-10 3 views
3

предположит, что значениеУдалить запятую из строки в PHP

1,2,,4,5,6 - Для этого я могу использовать str_replace(",,",",",$mystring) получить 1,2,4,5,6

Как получить значение, как 2,4,5,6 от ,2,,4,5,6, где два или более последовательных запятые заменяются единственная запятая, и если запятая появляется перед любым значением, ее игнорируют. Если есть только запятые, такие как ,,,,,,, тогда возвращается пустое значение.

как это сделать в php.

+0

Попробуйте следующее: str_replace (',,', ',', 1,2,, 4,5,6); –

+0

Просто из любопытства, из этой струны? Возможно, проблема в том, как создается эта строка. Разве не возможно, что между цифрами может быть три запятой? В этом случае он заменит только одну пару запятых и оставит две запятые. –

+0

это значение, разделенное запятыми, поступает из полей ввода с тем же именем. I сохраняет свои значения с помощью запятых. Если любой вход пуст, тогда строка будет иметь пустое место, за которым следует запятая снова. Когда всякий раз, когда мне нужно предварительно заполнять эти значения, я просто запускаю цикл В предварительном просмотре я должен показывать только фактическое значение. –

ответ

3

Вы можете написать explode строку запятой, а затем implode после фильтрации пустых строк.

$val=",2,,4,5,6"; 
$parts=explode(",",$val); 
$parts=array_filter($parts); 
echo(implode(",",$parts)); 

Обратите внимание, что это будет также фильтровать 0 от ваших ценностей. Если вы хотите сохранить нули, см this question

+1

Обратите внимание, что 'array_filter' также может удалять нули. Я не уверен, хочет ли OP для нулей или нет. –

+0

Yup, хорошая точка. Я добавлю это к ответу. @Andrew –

0
// 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); 
+0

Хотя этот код может помочь решить проблему, он не объясняет _why_ и/или _how_, он отвечает на вопрос. Предоставление этого дополнительного контекста значительно улучшит его долгосрочную ценность. Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, включая ограничения и допущения. –

1

Вы можете делать то, что вы делали на вашей первой задаче ...

Затем используйте trim() для удаления ненужных запятых на фронте или в конце строки.

$mystring = ',2,,4,5,6'; 

$output = str_replace(',,', ',', $mystring); 

echo trim($output, ','); 

//Output will be: 2,4,5,6 
Смежные вопросы