Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP解析器ASP页_Php_Parsing - Fatal编程技术网

PHP解析器ASP页

PHP解析器ASP页,php,parsing,Php,Parsing,可能重复: 我已将此标签放入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/pro

可能重复:

我已将此标签放入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];  
} 
?> 

您的正则表达式(在
preg\u match\u all
中)是错误的。它应该是
##is
,因为class属性位于第一位,而不是最后一位,并且用单引号而不是双引号括起来

您应该高度考虑使用和解析文档而不是正则表达式。

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;

您必须根据从中获取内容的页面的HTML代码稍微修改正则表达式:

'#<a class=\'Lp\' href="(.*?)">(.*?)</a>#is'
“##是”

请注意,类是第一个类,它由单引号而不是双引号包围。我进行了测试,它对我有效。

此代码不适用于asp页面。第4行有相同的错误:警告:DOMDocument::loadHTML()[DOMDocument.loadHTML]:实体中的DOCTYPE声明放错了位置,第22行在/home/content/n/9/5/n95161273/html/Vamper_diaries/parser.php第4行警告:DOMDocument::loadHTML()[DOMDocument.loadHTML]:htmlparserstarttag:Entity中的标签放错了位置,第4行的/home/content/n/9/5/n95161273/html/vampile\u diaries/parser.php中的第102行。这些只是警告,DOM仍然加载该文件。在加载调用之前将libxml_use_internal_errors()设置为true,之后设置为false,这样就可以抑制它们。