我想用preg_split分割一个字符串并围绕结果

时间:2014-11-27 00:54:31

标签: php regex string preg-split

我正在尝试使用preg_split拆分字符串,获取结果,用自定义数据包围它们,然后将它们重新插入到原始字符串中。

例如:

$string="this is text [shortcode] this is also text [shortcode2] this is text";

之后,我希望字符串相等:

$string="<span id='0'>this is text </span>[shortcode]<span id='1'> this is also text </span>[shortcode2]<span id='2'>this is text</span>";

我成功地将字符串拆分为数组:

$array=preg_split(/\[[^\]]*\]/,$string);

然后我尝试了一个for next循环来替换值 - 这是正常的,除非数组值在字符串中具有相同的匹配。

感谢任何帮助 - 或者其他可能更好的方法。

1 个答案:

答案 0 :(得分:1)

preg_split()是错误的工具,我建议使用回调。

以下是一个让您入门的示例,您可以根据自己的需要对其进行修改。

$str = preg_replace_callback('~(?:\[[^]]*])?\K[^[\]]+~', 
     function($m) { 
        static $id = 0;                                
        return "<span id='".$id++."'>$m[0]</span>"; 
     }, $str);

eval.in demo