【发布时间】:2013-09-10 15:20:55
【问题描述】:
我正在使用 preg_match_all() 函数从 HTML 代码中解析一些数据。为了使它更容易,我使用正则表达式工具来做到这一点。
所以,我的模式是这样的:
<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)</td>
当我在正则表达式工具中使用它时,我得到了结果。但是当我输入preg_match_all() 函数时,我没有得到结果。我已经尝试在在线 PHP 函数测试器 (functions-online.com/preg_match_all.html) 上运行它,该模式给出 null 结果并显示消息unknown modifier 'w'。
对不起..,这就是我所说的使用 preg_match_all 函数:
preg_match_all('|<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)</td>|', $v, $matches3, PREG_PATTERN_ORDER);
是什么让它有不同的结果?以及如何使用具有该模式的preg_match_all() 获得结果?
我希望有人帮助我。之前谢谢。
【问题讨论】:
-
您如何在代码中使用正则表达式?你能用
preg_match_all显示代码sn-p吗? -
你能告诉我们你是如何调用
preg_match_all()函数的吗? -
preg_match_all('|<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)</td>|', $v, $matches3, PREG_PATTERN_ORDER); -
谢谢,我已经得到结果了。
-
不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。请参阅htmlparsing.com/php 或this SO thread,了解如何使用已经编写、测试和调试过的 PHP 模块正确解析 HTML。
标签: php regex html-parsing preg-match-all