gpt4 book ai didi

anchor 标签的 PHP 正则表达式匹配

转载 作者:行者123 更新时间:2023-11-28 01:51:11 25 4
gpt4 key购买 nike

我正在尝试使用 REGEX 拆分字符串,同时保持分隔符。我希望通过 anchor 标记将一个非常大且不可预测的字符串分开。我正在使用 HTML tidy 来确保标签是正确的,但是任何东西都可以出现在我希望匹配的 anchor 标签之前或之后。

*PRECEDING-ANYTHING*<a *ANYTHING*>*ANYTHING*</a>*PROCEDING-ANYTHING*
*PRECEDING-ANYTHING*<a *ANYTHING*>*ANYTHING*</a>*PROCEDING-ANYTHING*

href URL 可以是任何内容,附加属性(例如“目标”)也可以是任何内容。

我做了很多搜索和测试,要么我做错了什么,要么 Stack Overflow 上的其他答案不适用。

使用

$parts= preg_split($pattern, $textWithAnchors, -1, PREG_SPLIT_DELIM_CAPTURE) 

我希望 $parts 类似于以下内容。

parts[0] is equal to *PRECEDING-ANYTHING*
parts[1] is equal to <a *ANYTHING*>*ANYTHING*</a>
and so forth

正则表达式捕获整个 anchor 标记和其中的所有内容很重要。

如果有任何帮助,我将不胜感激,我特别要求提供一个可以在 PHP 中完成此任务的正则表达式。我知道有 HTML 解析器,但是在这种情况下使用 REGEX 是最佳选择。不过,也许这将是一次学习经历。

最佳答案

使用 PREG_SPLIT_DELIM_CAPTURE 对您没有帮助,因为它会将分隔符正则表达式的第 1 组中捕获的文本作为单独的元素返回,但您希望分隔符是 < em>包含元素。

要指定使用输入的分隔符,请使用正则表达式环顾四周
这段代码完成了这项工作:

$parts= preg_split('/(?=<a)|(?<=\/a>)/', $textWithAnchors);

它使用对打开标签的前瞻性,对结束标签的后视性进行拆分。

查看 live demo此代码的一部分根据需要拆分您的示例。

关于 anchor 标签的 PHP 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981557/

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