致命错误:无法重新声明parse_external_url()

时间:2015-06-13 11:04:27

标签: php

我写了一段代码,以解析作为输入的网站中的URL(我选择网站:www.tunisie-web.org),并确定是否有外部 我的脚本php:crawl.php的内容

       <?php 
         set_time_limit(10000); 
     include_once('../PHPCrawl_083/PHPCrawl_083/libs/PHPCrawler.class.php'); 

    class MyCrawler extends PHPCrawler  
    {  
     function handleDocumentInfo(PHPCrawlerDocumentInfo $DocInfo)  
     { 
  // Just detect linebreak for output ("\n" in CLI-mode, otherwise "<br>"). 
   if (PHP_SAPI == "cli" ) $lb = "\n";
   else { 
   $lb = "<br/>";
   function parse_external_url( $url) {
   echo "0"."<br/>";
   // Abort if parameter URL is empty
   if( empty($url) ) {
    echo "l'url est vide"."<br/>";
}
echo "1"."<br/>";

     // Parse home URL and parameter URL
     $link_url = parse_url( $url );
      $home_url = parse_url( $_SERVER['HTTP_HOST'] );     
       //$home_url = parse_url( home_url() );  // Works for WordPress

      // Decide on target
      if( $link_url['host'] == $home_url['host'] ) {
       // Is an internal link
       echo "<br/>";
      echo "2"."<br/>";
       }     
      else {
       // Is an external link
       // Print the URL and the HTTP-status-Code 
       echo "Page requested: ".$url." (".$url->http_status_code.")"."<br/>"; 

      // Print the refering URL 
       echo "Referer-page: ".$url->referer_url."<br/>";
       }
        echo "3";


        }
        parse_external_url( $DocInfo->url);
        echo "<br/>"; 
       flush(); 
         }
       } 
      } 
    $crawler = new MyCrawler(); 
    $crawler->setURL("www.tunisie-web.org "); 
    $crawler->addReceiveContentType("#text/html#"); 
   $crawler->addURLFilterRule("#\.(jpg|gif|png|pdf|jpeg|css|js)$# i"); 
    $crawler->setWorkingDirectory("C:/Users/mayss/Documents/travailcrawl/"); 
      $crawler->go(); 
    ?>

但是它显示了下面的结果

0 1 请求的页面:http://www.tunisie-web.org() Referer的页面: 3

和这个错误 致命错误:无法在第23行的C:\ wamp \ www \ crawl \ crawl.php中重新声明parse_external_url()(之前在C:\ wamp \ www \ crawl \ crawl.php:23中声明)

1 个答案:

答案 0 :(得分:0)

这只是意味着您正在重新声明该功能。

可能你已经包含C:\wamp\www\crawl\crawl.php,其中声明了该函数 OR 扩展类PHPCrawler.class.php具有相同的功能。

<强>解决方案:

重命名在MyCrawler类中声明的函数,如:

function parse_external_url( $url) {
  //======TO===========
function parse_external_url2( $url) {
  // OR to other name

注意:我怀疑你想要在你的类中调用函数parse_external_url而不是声明,Coz在另一个函数中声明一个函数不是一个好习惯。 如果是,正确调用它; 如果没有,然后在函数handleDocumentInfo之外使用其他名称声明它,并在您班级的handleDocumentInfo函数中正确调用该函数。