如何提取 PHP 中锚标记之间的文本?
How to extract the text between anchor tag in PHP?
我在标题为 $message
的变量中有一个字符串,如下所示:
$message = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';
我只想获取锚标记内的文本,即 TEST PRA 在这种情况下使用 PHP。
我应该如何高效地执行此操作?有人可以在这方面帮助我吗?
提前致谢。
使用preg_match_all
函数进行全局匹配。
preg_match_all('~>\K[^<>]*(?=<)~', $str, $match);
这里preg_match
就够了。 \K
在最后打印时丢弃先前匹配的字符,因此它不会考虑先前匹配的 >
字符。您也可以使用积极的回顾而不是 \K
,例如 (?<=>)
。 [^<>]*
取反字符 class,匹配除 <
或 >
之外的任意字符零次或多次。 (?=<)
,断言匹配后必须跟有 <
个字符的肯定前瞻断言。
$str = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';
preg_match('~>\K[^<>]*(?=<)~', $str, $match);
print_r($match[0]);
输出:
TEST PRA
我在标题为 $message
的变量中有一个字符串,如下所示:
$message = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';
我只想获取锚标记内的文本,即 TEST PRA 在这种情况下使用 PHP。
我应该如何高效地执行此操作?有人可以在这方面帮助我吗?
提前致谢。
使用preg_match_all
函数进行全局匹配。
preg_match_all('~>\K[^<>]*(?=<)~', $str, $match);
这里preg_match
就够了。 \K
在最后打印时丢弃先前匹配的字符,因此它不会考虑先前匹配的 >
字符。您也可以使用积极的回顾而不是 \K
,例如 (?<=>)
。 [^<>]*
取反字符 class,匹配除 <
或 >
之外的任意字符零次或多次。 (?=<)
,断言匹配后必须跟有 <
个字符的肯定前瞻断言。
$str = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';
preg_match('~>\K[^<>]*(?=<)~', $str, $match);
print_r($match[0]);
输出:
TEST PRA