Добавить пробел после запятой - PullRequest
2 голосов
/ 06 июня 2011

У меня возникли проблемы с выяснением этого.

У меня есть следующая строка CSV

hello world, hello             world, hello

Среднее значение имеет лишние пробелы. Я обрезаю это, используя

preg_replace('/( )+/', ' ', $string) 

Функция отличная, но она также удаляет пробелы после запятых. Становится ..

hello world,hello world,hello

Я хочу сохранить 1 пробел после запятой, вот так

hello world, hello world, hello

Как я могу это сделать?

РЕДАКТИРОВАТЬ:

Использование preg_replace('/(?<!,) {2,}/', ' ', $string);, как предложено, работает, но я столкнулся с другой проблемой .. Когда я использую более 1 пробела после запятой, он возвращает 2 пробела после запятой.

так

hello world,             hello world,hello

возвращает

hello world,  hello world, hello

В качестве решения я создаю массив из строки CSV и использовал implode()

$string = "hello world,   hello        world,hello";
$val = preg_replace('/( )+/', ' ', $string);
$val_arr = str_getcsv($val); //create array
$result = implode(', ', $val_arr); //add comma and space between array elements
return $result; // Return the value

Теперь я получаю hello world, hello world, hello Это также обеспечивает пробел после запятой, если отсутствует.

Кажется, работает, не уверен, что есть лучший способ. Отзывы приветствуются:)

Ответы [ 3 ]

11 голосов
/ 06 июня 2011

Это сработало для меня.

$string = "hello world,   hello        world,hello";
$parts = explode(",", $string);
$result = implode(', ', $parts);
echo $result; // Return the value
//returns hello world, hello world, hello

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

6 голосов
/ 06 июня 2011

Это будет соответствовать 2 или более пробелов вместе и заменить на единичный пробел.Он не будет совпадать с пробелом после запятой.

preg_replace('/(?<!,) {2,}/', ' ', $string);

RegExr

2 голосов
/ 06 июня 2011

Вместо использования + квантификатора, который соответствует 1 или более пробелам, используйте квантор {2,}, который будет соответствовать только 2 или более пробелам ... ", привет" не будет соответствовать этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...