我正在尝试使用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循环来替换值 - 这是正常的,除非数组值在字符串中具有相同的匹配。
感谢任何帮助 - 或者其他可能更好的方法。
答案 0 :(得分:1)
preg_split()
是错误的工具,我建议使用回调。
以下是一个让您入门的示例,您可以根据自己的需要对其进行修改。
$str = preg_replace_callback('~(?:\[[^]]*])?\K[^[\]]+~',
function($m) {
static $id = 0;
return "<span id='".$id++."'>$m[0]</span>";
}, $str);