我正在尝试使用以下正则表达式在某些HTML内容中间插入一些文本:
if (preg_match('/(.*<\/a><\/p>)(.*?)/Ui', $content, $match))
$custom_content = $match[1] . $title . $match[2];
我想要的结果是在遇到第一个$title
后立即将</a></p>
插入到HTML中。这很有用,但是不管我使用的贪婪/不合理的组合,第二个捕获组总是保持空白。结果是</a></p>
之后的其余内容未附加到结果中。
我在这里做错了什么?
答案 0 :(得分:1)
为什么要费心去捕捉你不关心的部分。只需将第一组替换为自身加$title
,例如
$custom_content = preg_replace('@(</a></p>)@Ui', '$1' . $title, $content, 1);
答案 1 :(得分:0)
具有讽刺意味的是,我在发布此消息后30秒找到了答案...在模式中添加's'选项也匹配新行:
/(.*<\/a><\/p>)(.*?)/Uis
非常感谢: - )