2013-12-20 6 views
1

Мне нужно преобразовать этотPHP preg_replace каждый второй встречаемости

329638.798,7387605.001,330131.098,7387324.001,329740.398,7386851.001 
        ^     ^

В этот

329638.798,7387605.001L330131.098,7387324.001L329740.398,7386851.001 
        ^     ^

Более просто

a1,b1,a2,b2,a3,b3 => a1,b1La2,b2La3,b3 

Это означает, что заменить каждую секунду вхождение запятой с «L ».

Я прочитал this post и попробовал этот

preg_replace('/(\S+,\S+)\s,/', '$1L', $geom); 

без успеха.

+0

Почему вы не просто использовать 'explode', а затем использовать' foreach'? Гораздо проще. – str

+1

Удалите '\ s' из вашего регулярного выражения, и вы должны быть хорошими. –

ответ

1

В вашем шаблоне у вас есть \S - это соответствует все, что не является символом пробела, который включает запятую. Вместо этого вы можете использовать \w. Вот как:

echo preg_replace('/(\w+,.*?\w),/', '$1L', $geom) 

Выход:

329638.798,7387605.001L330131.098,7387324.001L329740.398,7386851.001 

Demo.

2

Если вы все еще хотите использовать регулярное выражение, используйте:

preg_replace('/(,[^,]*?),/', '$1L', $geom) 
1

Быстрое решение:

$input = 'a1,b1,a2,b2,a3,b3'; 

echo preg_replace('/([^,]*?,[^,]*?),/', '$1L', $input); 

Выход:

a1,b1La2,b2La3,b3 
Смежные вопросы