php正则咨询 关于href替换

$str中有很多超链接。想把href中的内容加密如下:ahref='http://www.baidu.com'加密成ahref='NgKOkoKjasdfsa'类似这样加... $str中有很多超链接。想把href中的内容 加密 如下:
a href='http://www.baidu.com'
加密成
a href='NgKOkoKjasdfsa' 类似这样
加密函数有,但正则不太懂。
多谢
展开
 我来答
次子小标
推荐于2017-11-26 · TA获得超过146个赞
知道答主
回答量:77
采纳率:0%
帮助的人:90.9万
展开全部
<?php
$str = preg_replace('/href=[\'|\"](\S+)[\'|\"]/i',"href='${1}'",$str);

备注:第二个参数的${1}就是匹配第一个参数里的分组,加密就对它处理


举个例子:

<?php
$str = 'a href="test.abc"';
echo preg_replace('/href=[\'|\"](\S+)[\'|\"]/i',"href='".md5('${1}')."'",$str);


将href里的路径md5加密,结果是:

a href='21e4f6b847fdb1445c297812710f15fd'

更多追问追答
追问
你好,加密函数放上去后,加的是$1这个字符,而不是$1的内容
追答
<?php
$str = 'a href="test.abc"';

function test($a)
{
    return $a.'_ceshi';
}

echo preg_replace('/href=[\'|\"](\S+)[\'|\"]/i',"href='".test('${1}')."'",$str);

按这个来,调用函数的时候,你肯定少了单引号

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式