gpt4 book ai didi

php - 正则表达式跳过一个标签,如果它在另一个标签内

转载 作者:可可西里 更新时间:2023-11-01 00:40:59 25 4
gpt4 key购买 nike

如果给定字符串不在另一个标签内,我想使用 php regex 从给定字符串中删除 anchor 标签。

输入:

Hi Hello <a href="#">World</a>. This is <div class="some">testing <a href="#">content</a>. some more content</div>

输出:

Hi Hello. This is <div class="some">testing <a href="#">content</a>. some more content</div>

提前致谢。

最佳答案

像这样:

$string = 'replace <a href="x">A</a> but not <div> <a>B</a> in tag </div> but also <a>C</a><div></div>';

echo preg_replace('/<a[^>]*?>([^<]*)<\/a>(?![^<]*<\/)/gi', '', $string);

否定先行确保 anchor 标记后不跟</ .
因此它没有被另一个标签包围。

标签的内容在捕获组 1 中,如果您想用 '\1' 替换而不是 '' .

如果它是关于 div 标签的,那么这个标签将忽略 div 的标签:

echo preg_replace('/<div.*?>.*?<\/div>\K|<a[^>]*?>([^<]*)<\/a>/gi', '\1', $string);

关于php - 正则表达式跳过一个标签,如果它在另一个标签内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37719403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com