【问题标题】:Find Chinese text in HTML using preg_match使用 preg_match 在 HTML 中查找中文文本
【发布时间】:2016-09-30 09:38:34
【问题描述】:

我正在尝试从 HTML 字符串中获取文本字符串。 我想只捕获标签之间的文本并跳过任何空标签。

我的尝试是当前的尝试,可以在这里找到:
https://regex101.com/r/3Ujmw6/2

  • 我不能使用\w,因为我需要捕获汉字
  • 我只想要文本而不想要很多空结果

我试过了:

/>(\X+?)</g

//I will fail on nested tags, it capture the first nested tag
<p><strong>blablab</strong></p>

还有这个:

/>(\X*?)</g

//Finds me all the string, but also includes loads of empty strings
//for adjacent tags ><

有没有办法从\X 中排除

【问题讨论】:

  • 我很确定\w 支持中文字符,如果您使用的是 utf-8 ...不过我可能是错的。即便如此,您也不应该真的尝试使用 RegExp 解析 HTML - 它是适合这项工作的错误工具 - 改用 DOMDocument() 之类的东西。
  • 我无法让它与 \w 一起使用,除非它是我正在使用的正则表达式站点的限制。感谢 domcrawler 的建议,没有考虑使用它来抓取文本节点。转向该解决方案。
  • 愿此功能strip_tags()对您有所帮助。

标签: php regex utf-8 preg-match


【解决方案1】:

试试正则表达式

>(\s*[^\s<][^<]*)

这只是匹配&gt;&lt; 之间的所有文本,而不是所有的空格。见https://regex101.com/r/3Ujmw6/4

【讨论】:

  • 根据 CD001 的评论,我改用 DomCrawler,但您的回答确实符合我的要求。
猜你喜欢
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2012-05-16
相关资源
最近更新 更多