【问题标题】:cannot catch the html tags using regex ! [duplicate]无法使用正则表达式捕获 html 标签! [复制]
【发布时间】:2011-10-28 07:58:07
【问题描述】:

可能重复:
How to parse HTML with PHP?
crawling a html page using php?

我正在尝试找到一种方法来查找 html 标签。

所以我尝试使用 preg_match_all 函数来查找 html 标签。

这是我使用的代码:

$code = "<div>This is a test</div>";
preg_match_all("/(<[^<>]+>)([^<>]+)(<[^<>]+>)/",
$code, $matches);
var_dump($matches);

当我使用此代码时,我尝试运行它.. 页面返回

数组(4) { [0]=> 数组(1) { [0]=> 字符串(25) " 这是一个测验 " } [1]=> 数组(1) { [0]=> 字符串(5) " " } [2]=> array(1) { [0]=> string(14) "这是一个测试" } [3]=> array(1) { [0]=> string(6) " " } }

正如您在数组中看到的那样。未检测到 &lt;div&gt;&lt;/div&gt;

你能帮帮我吗? ,并告诉我问题到底出在哪里。

对不起我的英语..

谢谢,

【问题讨论】:

  • 不要使用正则表达式:stackoverflow.com/questions/1732348/…
  • @Corey Ogburn 我想使用正则表达式这是我想做的事情所必需的......谢谢和抱歉
  • @gpojd 这个主题不使用正则表达式..我想在我的网站上做的事情需要正则表达式..
  • 你只是很固执,使用 HTML DOM PARSER(例如:simplehtmldom.sourceforge.net)而不是正则表达式来解析 html。 IMO 顽固的人不值得帮助。

标签: php regex preg-match


【解决方案1】:

请看:RegEx match open tags except XHTML self-contained tags

正如 Bobince “解释”的那样,您不应该使用正则表达式来解析 HTML。

由于您使用的是 PHP,您可以查看DOMDocument,它可以让您安全地解析 HTML。查看参考资料,尝试将DOMDocument 合并到您的应用中,如果您仍有问题,请回答新问题或适当地编辑此问题。

【讨论】:

  • 这是一个合适的评论,但只是说“不要使用正则表达式”而不提供替代方案不是答案。
  • bobince 的替代方法是尝试使用 XML 解析器。
  • 我提到的问题有几十种选择。我添加了最后一行,以便 SE 不会将我的“琐碎答案”转换为评论。
  • 添加到 PHP HTML 解析器的链接需要额外的 10 秒。
  • 我完全支持您阅读链接。但是,在 regex/HTML 案例中,我更关心开发人员能否快速掌握替代方案。从我所看到的这样的问题来看,他们更倾向于寻找一个会“发出吱吱声”的正则表达式,然后实际上对该答案进行了足够深入的阅读以达到“使用解析器部分”。但是,我觉得 HTML/regex 的使用是有罪的,足以暂时忽略没有深入阅读答案的懒惰。
猜你喜欢
  • 2021-04-05
  • 2011-05-04
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2021-09-30
相关资源
最近更新 更多