可能重复:
PHP : Parser asp page
我在asp页面中有这个标签
<a class='Lp' href="javascript:prodotto('Prodotto.asp?C=3')">AMARETTI VICENZI GR. 200</a>
如何解析此asp页面以获得文本 AMARETTI VICENZI GR。 200 ?
这是我使用但不起作用的代码:
<?php
$page = file_get_contents('http://www.prontospesa.it/Home/prodotti.asp?c=12');
preg_match_all('#<a href="(.*?)" class="Lp">(.*?)</a>#is', $page, $matches);
$count = count($matches[1]);
for($i = 0; $i < $count; $i++){
echo $matches[2][$i];
}
?>
答案 0 :(得分:1)
你是正则表达式(在preg_match_all
中)是错误的。它应该是#<a class='Lp' href="(.*?)">(.*?)</a>#is
,因为class属性是第一个,而不是最后一个,并且用单引号括起来,而不是双引号。
您应该高度考虑使用DOMDocument
和DOMXPath
来解析文档而不是正则表达式。
DOMDocument / DOMXPath示例:
<?php
// ...
$doc = new DOMDocument;
$doc->loadHTML($html); // $html is the content of the website you're trying to parse.
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//a[@class="Lp"]');
foreach ( $nodes as $node )
echo $node->textContent . PHP_EOL;
答案 1 :(得分:0)
您必须根据获取内容的页面的HTML代码稍微修改正则表达式:
'#<a class=\'Lp\' href="(.*?)">(.*?)</a>#is'
请注意,该类是第一个,它被单引号括起来而不是双引号。我测试过它对我有用。