2013-12-20 20 views
1

我需要改变这个PHP的preg_replace每秒occurence

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代替逗号的每一秒occurence ”。

我读过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