我正在使用正则表达式从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>
任何帮助将不胜感激,
谢谢!
答案 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 />");
}
}