首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:无法重新声明parse_external_url()

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

Stack Overflow用户
提问于 2015-06-13 19:04:27
回答 1查看 559关注 0票数 0

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

代码语言:javascript
复制
       <?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中声明

EN

回答 1

Stack Overflow用户

发布于 2015-06-13 19:23:52

这仅仅意味着您正在重新声明该函数。

您可能已经包含了将函数声明为 C:\wamp\www\crawl\crawl.php或具有相同函数的扩展类PHPCrawler.class.php

解决方案:

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

代码语言:javascript
复制
function parse_external_url( $url) {
  //======TO===========
function parse_external_url2( $url) {
  // OR to other name

注意:我怀疑你想在类中调用函数parse_external_url而不是声明,因为在另一个函数中声明一个函数不是一个好的做法。如果是这样,就正确地调用它;如果没有,就用不同的名称在函数handleDocumentInfo外部声明它,并在你的类的handleDocumentInfo函数中正确地调用那个函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30817938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档