你等等 发表于 2020-12-23 13:14:21

请教PHP技术这样换过滤为什么不成功?

测试了很多次都不行
网上找的
下面这句,可以将a href中的内容替换掉
$txt = preg_replace('/(?<=href=)([^>]*)(?=>)/i','286.net/index.php?url=$1 ,$txt);

比如,按照上面的语句替换,可以将:
<a href="www.286.com" / >落伍< / a>
替换成:
<a href=286.net/index.php?url="www.286.com" / >落伍< / a>
网上说的没错,可没把引号替换掉,还是不对。
引号位置不对无法访问啊。

正确的应该是:
<a href=“286.net/index.php?url=286.net/index.php?url=" / >落伍< / a>
怎样才能把引号替换掉?
网上找的教程都不行,晕菜了
哪位哥们能帮帮忙吗?

koko99 发表于 2020-12-23 13:32:31

$txt = preg_replace('/href="([^"]+)"/i','href="286.net/index.php?url=$1"' ,$txt);

你等等 发表于 2020-12-23 13:54:34

koko99 发表于 2020-12-23 13:32


谢谢楼上的解答
试了一下,替换后,整个文字代码竟然为空了
不知哪里的缘故

对了,我是用于dede的body字段URL外链替换,替换后内容竟然为空,晕

hcz 发表于 2021-5-25 13:59:44

:ohh::ohh::ohh::ohh::ohh::ohh::ohh:

天上人间 发表于 2021-5-25 16:34:30


$txt = preg_replace('/<a\s+href\=[\'|"]([\s\S]*?)[\'|"]/i','286.net/index.php?url=$1 ,$txt);

这样行不行?

森林 发表于 2021-5-25 17:15:05

用二楼的代码是可以符合你的需求的,但你确定传入$txt的a标签格式必须都是一样的,比如有单引号的或者没有引号的就不行。

liyi520 发表于 2021-5-26 14:06:43

这里都是位高权重看透人间网站的老家伙,去技术论坛吧:ohh:
页: [1]
查看完整版本: 请教PHP技术这样换过滤为什么不成功?