我想使用regexp从大型表格单元格中提取内容,并使用PHP处理数据。
以下是我想要匹配的数据:
<td>Current Value: </td><td>100.178</td>
我尝试使用此正则表达式匹配并检索文本:
preg_match("<td>Current Value: </td><td>(.+?)</td>", $data, $output);
然而,我收到一条“未知修饰符”警告,我的变量$ output显示为空。
我怎样才能做到这一点 - 您能否简要总结一下解决方案的工作原理,以便我能够理解为什么我的代码没有?
答案 0 :(得分:2)
您需要在正则表达式周围添加分隔符:
preg_match("#<td>Current Value: </td><td>(.+?)</td>#", $data, $output);
标准分隔符为/
,但如果您愿意,可以使用其他非字母数字字符(这在此有意义,因为正则表达式本身包含斜杠)。在你的情况下,正则表达式引擎认为你想使用尖括号作为分隔符 - 并且失败了。
还有一个提示(除了规范的劝诫“你不能用regexen解析HTML”(我觉得在这样的特定情况下完全没问题)):使用([^<>]+)
而不是(.*?)
。这可以确保您的正则表达式永远不会遍历嵌套标记,这是处理标记语言时常见的错误来源。
答案 1 :(得分:1)
我建议您使用DOM Parser。它将使您的生活更轻松,保持代码清洁,并且更易于维护。
http://simplehtmldom.sourceforge.net/
这里有一些访问子元素的例子: http://simplehtmldom.sourceforge.net/manual.htm#section_traverse