好的,我尝试了2个小时。现在是时候在stackoverflow上询问某人了。
我有这个来源html:
<div class="post_main">
Post Content (has HTML)
</div><div class="post_email">[...]
Other Stuff
<div class="post_main">
Post Content (has HTML)
</div><div class="post_email">[...]
Other Stuff
<div class="post_main">
Post Content (has HTML)
</div><div class="post_email">[...]
等等。 我希望在每个帖子内容之前添加“Something”。
要这样做我正在使用preg_replace,但它不起作用。因为我实际上正在使用
'|<div class="post_main">(.*)</div><div class="post_email">|s
作为正则表达式,
"</div><div class="post_email">"
从(。*)吃掉,我只有一次替换而不是3次。
现在,我怎么能得到这个preg匹配:
匹配everthing包含换行符,但排除给定字符串(在这种情况下:
)"</div><div class="post_email">")
非常感谢你。
答案 0 :(得分:2)
function addSomething($str,$add) {
$find = '/(<div class=\"post_main\">)/';
$replace = '$1' . $add;
return preg_replace($find, $replace, $str);
}
答案 1 :(得分:2)
来自mistabell的回答非常适合您的情况。 如果你仍然想按照自己的方式去做 - 只需加一点'?'在'*'后面。 我的意思是这样的:
'|<div class="post_main">(.*?)</div><div class="post_email">|s
它调用延迟量词,它使你的正则表达式不那么贪心。