PHP正则表达式 - 捕获字符串的剩余部分

时间:2012-03-22 04:55:42

标签: php regex

我正在尝试使用以下正则表达式在某些HTML内容中间插入一些文本:

if (preg_match('/(.*<\/a><\/p>)(.*?)/Ui', $content, $match))
        $custom_content = $match[1] . $title . $match[2];

我想要的结果是在遇到第一个$title后立即将</a></p>插入到HTML中。这很有用,但是不管我使用的贪婪/不合理的组合,第二个捕获组总是保持空白。结果是</a></p>之后的其余内容未附加到结果中。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

为什么要费心去捕捉你不关心的部分。只需将第一组替换为自身加$title,例如

$custom_content = preg_replace('@(</a></p>)@Ui', '$1' . $title, $content, 1);

答案 1 :(得分:0)

具有讽刺意味的是,我在发布此消息后30秒找到了答案...在模式中添加's'选项也匹配新行:

/(.*<\/a><\/p>)(.*?)/Uis

非常感谢: - )