请教如何使用preg_replace替换多行的a标签。

$body的内容为<ahref="http://www.baidu.com/1.html">这里是1</a><ahref="http://www.baidu.com/2.... $body 的内容为

<a href="http://www.baidu.com/1.html">这里是1
</a>
<a href="http://www.baidu.com/2.html">这里是2
</a>
<a href="http://www.baidu.com/3.html">这里是3
</a>

$body = preg_replace("/(<a[^>]*>(.+?)<\/a>)/is", "<a href='http://www.baidu.com/'>$1</a>", $body);

替换失败。

求帮助,这种多行的,而且多个的a标签怎么让他每个都这样替换了。
展开
 我来答
183525594
2015-02-20 · TA获得超过2922个赞
知道大有可为答主
回答量:3664
采纳率:58%
帮助的人:2070万
展开全部
preg_match_all('/\<a\s+href\=\"[A-Za-z]+:\/\/\S*\"\>\w+[\s\S]*\<\/a\>/is', $body, $matches);

这样似乎可以


如果链接中间的文字是中文,这种也是不行的,要用u模式修正


如下:

<?php 

header("content-type: text/html; charset=utf-8");
    
    $body = '<a href="
这里是1
</a>
<a href="

</a>
<a href="
这里是c
</a>';

preg_match_all('/\<a\s+href\=\"[A-Za-z]+:\/\/\S*\"\>[\w^\x4e00-\x9fa5]+[\s\S]*\<\/a\>/isu', $body, $matches);

var_dump($matches);

 ?>

 

至于替换,匹配出来就可以随便替换了,加几个子模式就行了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式