你好,亲爱的社区!
我需要构建一个函数来解析一个非常简单的表的内容(带有一些标签和值),请参阅下面的url。我使用了各种方法来解析html源代码。但这个有点棘手!看到我想解析的目标-它有一些入侵标记:
目标:http://www.schulministerium.nrw.de/BP/SchuleSuchen?action=644.0013008534253&SchulAdresseMapDO=194190
嗯,我试过这个
<?php
require_once('config.php'); // call config.php for db connection
$filename = "url.txt"; // Include the txt file which have urls
$each_line = file($filename);
foreach($each_line as $line_num => $line)
{
$line = trim($line);
$content = file_get_contents($line);
//echo ($content)."<br>";
$pattern = '/<td>(.*?)<\/td>/si';
preg_match_all($pattern,$content,$matches);
foreach ($matches[1] as $match) {
$match = strip_tags($match);
$match = trim($match);
//var_dump($match);
$sql = mysqli_query("insert into tablename(contents) values ('$match')");
//echo $match;
}
}
?>好的-参见第7-11行中的正则表达式:它不匹配!
Conclusio:,我必须重新工作解析器--这个脚本的一部分。我需要以不同的方式解析--因为parsercode与目标不完全匹配。它的目的是拿回表格的结果。
有人能帮我找到一个更好的正则表达式或者更好的解析这个网站的方法吗.任何和所有的帮助都会得到极大的帮助。
视为零
发布于 2010-12-19 11:20:12
您可以使用使用preg_split('/<td width="73%"> /', $str, -1);拆开表(注意:我没有麻烦转义字符)
你会想要删除第一个条目。之后,您可以使用stripos和substr来删除所有的内容。
这是一个基本的设置!你将不得不微调它相当多,但我希望这给你一个想法,什么将是我的方法。
发布于 2010-12-19 12:33:32
Regex并不总是提供完美的结果。使用任何HTML解析器都是个好主意。如戈登的回答中所描述的,有许多HTML解析器。
我以前用过简单HTML DOM解析器,它对我很管用。
例如,:
// Create DOM from URL or file
$html = file_get_html('http://www.example.com/');
// Find all <td> in <table> which class=hello
$es = $html->find('table.hello td');
// Find all td tags with attribite align=center in table tags
$es = $html->find('table td[align=center]');https://stackoverflow.com/questions/4482635
复制相似问题