gpt4 book ai didi

php - 正则表达式的问题

转载 作者:行者123 更新时间:2023-12-04 04:36:56 24 4
gpt4 key购买 nike

不久前,我构建了以下正则表达式:

~(?:<a.*?</a>|\[url.*?\[/url]|\[/?[^]]++]|</?[^>]++>)(*SKIP)(*FAIL)|\bcdkey\s*-\s*.*\b~is

这匹配所有不在 bbcode 或 html 标签内的 cdkey-xxx。到目前为止效果很好。

但是,当包含 bbcodes 和 html 标签时,我无法使其正常工作。我想,去掉前面的部分就足够了,但我似乎错了:
~\bcdkey\s*-\s*.*\b~is

有了这个正则表达式,
<a href="https://www.google.de/#q=cdkey-0192xdasas" class="externalURL">https://www.google.de/#q=cdkey-0192xdasas</a>

变成
<a href="https://www.google.de/#q=***>


[url]https://www.google.de/#q=cdkey-0192xdasas[/url]

变成
[url]https://www.google.de/#q=***]

虽然预期的结果是
<a href="https://www.google.de/#q=***" class="externalURL">https://www.google.de/#q=***</a>


[url]https://www.google.de/#q=***[/url]

我不知道,如何解决这个问题。

所以,我试图实现的是替换
[url]https://www.google.de/#q=cdkey-0192xdasas[/url]
[url=https://www.google.de/#q=cdkey-0192xdasas]Test[/url]
[img]https://www.google.de/#q=cdkey-0192xdasas[/img]
[url="https://www.google.de/#q=cdkey-0192xdasas"]Test 3[/url]
https://www.google.de/#q=cdkey-0192xdasas
Another plaintext cdkey - bla
<a href="https://www.google.de/#q=cdkey-0192xdasas" class="externalURL">https://www.google.de/#q=cdkey-0192xdasas</a>
<a href='https://www.google.de/#q=cdkey-0192xdasas'>Le Google</a>


[url]https://www.google.de/#q=***[/url]
[url=https://www.google.de/#q=***]Test[/url]
[img]https://www.google.de/#q=***[/img]
[url="https://www.google.de/#q=***"]Test 3[/url]
Plaintext https://www.google.de/#q=***
Another plaintext ***
<a href="https://www.google.de/#q=***" class="externalURL">https://www.google.de/#q=***</a>
<a href='https://www.google.de/#q=***'>Le Google</a>

最佳答案

我在您的正则表达式中看到的问题是 .*部分。

您正在匹配 尽可能多的金额 在您的比赛中,无需使用 s修饰符。

如果你知道你的 cdkey 总是数字和字母,你可以做这样的事情。

$text = preg_replace('/cdkey\s*-\s*[a-z0-9]+/i', '***', $text);

working demo

关于php - 正则表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601301/

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