【问题标题】:How to extract the text between anchor tag in PHP?如何在 PHP 中提取锚标记之间的文本?
【发布时间】:2015-03-14 12:04:57
【问题描述】:

我在一个名为 $message 的变量中有一个字符串,如下所示:

$message = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';

我只想获取锚标记内的文本,即 TEST PRA 在这种情况下使用 PHP。

我应该如何以有效的方式做到这一点?有人可以在这方面帮助我吗?

提前致谢。

【问题讨论】:

  • preg_match_all('~&gt;\K[^&lt;&gt;]+(?=&lt;)~', $str, $match); regex101.com/r/fT7gQ8/1
  • 或 PHP 中的某种 HTML 解析器。
  • @AvinashRaj:如果你能发布一个正确的答案,那对我和社区都会很有帮助。

标签: php html string html-parsing anchor


【解决方案1】:

使用preg_match_all 函数进行全局匹配。

preg_match_all('~>\K[^<>]*(?=<)~', $str, $match);

这里preg_match 就足够了。 \K 在最后打印时丢弃先前匹配的字符,因此它不会考虑先前匹配的 &gt; 字符。您也可以使用积极的后视而不是\K,例如(?&lt;=&gt;)。 [^&lt;&gt;]* 否定字符类,匹配任何字符,但不匹配&lt; 或&gt;,零次或多次。 (?=&lt;),肯定的前瞻断言断言匹配必须后跟&lt; 字符。

DEMO

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2015-04-24
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2017-12-26
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多