PHP正则表达式问题

时间:2011-08-18 10:21:28

标签: php

我正在使用正则表达式从html 中提取信息。

但是我搞砸了一些如何,并且不知道为什么。

PHP代码:

$printable = file_get_contents('./testplaylist.php', true);

if(preg_match_all('/<TR[^>]*>(.*?)<\/TR>/si', $printable, $matches, PREG_SET_ORDER)); {
foreach($matches as $match) {
$data = "$match[1]";

echo("$data <br />");

}
}

HTML DATA:

<TR class=" light ">
Stuff in here
</TR>

任何帮助将不胜感激,

谢谢!

4 个答案:

答案 0 :(得分:0)

我知道你的第一个问题是什么。正则表达式!我小子!但你检查过PHP DOM吗?

http://www.php.net/manual/en/domdocument.loadhtmlfile.php

它可能适用于你的情况就好了。它也会轻松10倍。

  

有些人在遇到问题时会想“我知道,我会用   正则表达式。“现在他们有两个问题。 -Jamie Zawinski

答案 1 :(得分:0)

在这里工作正常。除非你有嵌套表,否则它应该可以工作。

问题必须出在您的数据源中。使用var_dump进行一些跟踪。

答案 2 :(得分:0)

在解析HTML时,使用PHP的文档对象模型是安全的。除了非常简单的正则表达式,HTML解析在您DIY时很快就会失控。设置它需要一些开销,但是一旦你开始它就会很简单。

有关如何使用它的说明,请参阅DOM

如果你坚持使用正则表达式技术,至少,你可能需要逃避所有'&lt;'和'&gt;'例如。

/\<TR[^>]*\>(.*?)\<\/TR\>/si

答案 3 :(得分:0)

试试这个

http://sandbox.phpcode.eu/g/bba70.php

if(preg_match_all('/<TR[^>]*>(.*?)<\/TR>/msU', $printable, $matches)) {  
     foreach($matches[1] as $match) {
          echo("$match <br />");   
      }
}