【问题标题】:extract text from html using regex or other method使用正则表达式或其他方法从 html 中提取文本
【发布时间】:2011-08-17 15:31:42
【问题描述】:

我正在尝试使用正则表达式从以下 html 中提取文本“abcdef”:

<a href="xyz.com" rel="bookmark" title="hello_world">abc def</a>

我正在尝试这种模式

$pattern = "<a href=(.*?) rel='bookmark' title=(.*?)>(.*?)</a>"

如果有人帮助我找出模式,那将会很有帮助。我正在使用 PHP 。

谢谢

【问题讨论】:

  • 如果这就是你的 html,strip_tags 就可以了。如果没有,DOMDocument 是你的朋友。最好避免使用正则表达式来解析 XML 或 HTML。

标签: php regex html-parsing


【解决方案1】:

请改用DOMDocument。具体来说,DOMDocument::loadHTML。你的生活会轻松很多。

可以使用如下模式,但我真的不建议使用正则表达式来操作 HTML:

/<a\s+href\s*=\s*"([^"]+)"\s+rel\s*=\s*"([^"]+)"\s+title\s*=\s*"([^"]+)"\s*>([^<]+)<\/a>/

我还注意到在你的正则表达式中你有rel='bookmark',而原始字符串有rel="bookmark"。这可能就是您原来的正则表达式不起作用的原因。

【讨论】:

  • 这里是原始 html:laperuanavegana.wordpress.com/2011/02/08 我只想要这个文本“Flan de lucuma”,而不是来自标题,而是来自正文
  • @qmaruf 查看loadHTML 函数和DOMDocument 对象。这将为您提供所需的所有信息。
猜你喜欢
  • 2017-03-07
  • 2013-07-13
  • 2010-09-15
  • 2023-03-18
  • 2018-05-08
  • 2017-10-31
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多