2011-01-12 5 views
1

을 다시 선언 할 수 없습니다. 내 PHP에서 여러 require() 함수를 사용하려고하면이 오류가 발생합니다. 기본적으로 몇 xml 파서 페이지에 액세스하려면 몇 가지 require() 함수를 사용합니다. 이 문제를 해결하는 방법을 아는 사람은 누구입니까? 설명이 적절하지 않은 경우 아래에 말하여 해결하도록 노력하겠습니다. 고맙습니다. 긍정적 인 의견에 감사드립니다. 또한, 나는 PHP를 배우기 만하므로 너무 가혹하지 마십시오. 나는 아래의 코드를 제공 할 것이다. 치명적인 오류 :/응용 프로그램 (이전 /Applications/XAMPP/xamppfiles/htdocs/yournewsflow/news/sports.php:27에 선언)의 startElement()을 재 선언 할 수 없습니다/XAMPP/xamppfiles/htdocs에 여기 PHP : 치명적인 오류 : 어떤 이유에서든 startElement()

오류입니다 라인 (34)

Here are the require functions: 

     <?php 

     require("news/sports.php"); 
     require("news/political.php"); 
     ?> 




Here is the xml parser used for a couple pages: 
<?php 
$tag = ""; 
$title = ""; 
$description = ""; 
$link = ""; 
$pubDate = ""; 
$show= 50; 
$feedzero = "http://feeds.finance.yahoo.com/rss/2.0/category-stocks?region=US&lang=en-US"; $feedone = "http://feeds.finance.yahoo.com/rss/2.0/category-ideas-and-strategies?region=US&lang=en-US"; 
$feedtwo = "http://feeds.finance.yahoo.com/rss/2.0/category-earnings?region=US&lang=en-US"; $feedthree = "http://feeds.finance.yahoo.com/rss/2.0/category-bonds?region=US&lang=en-US"; 
$feedfour = "http://feeds.finance.yahoo.com/rss/2.0/category-economy-govt-and-policy?region=US&lang=en-US"; 

$insideitem = false; 
$counter = 0; 
$outerData; 

function startElement($parser, $name, $attrs) { 
    global $insideitem, $tag, $title, $description, $link, $pubDate; 
    if ($insideitem) { 
     $tag = $name; 
    } elseif ($name == "ITEM") { 
     $insideitem = true; 
    } } 
function endElement($parser, $name) { 
    global $insideitem, $tag, $counter, $show, $showHTML, $outerData; 
    global $title, $description, $link, $pubDate; 
    if ($name == "ITEM" && $counter < $show) { 
     echo "<table> 
       <tr> 
        <td> 

     <a href=\"".htmlspecialchars($description)."\">".htmlspecialchars($description)."</a> 
        </td> 
       </tr>"; 


     // if you chose to show the HTML 
     if ($showHTML) { 
      $title = htmlspecialchars($title); 
      $description = htmlspecialchars($description); 
      $link = htmlspecialchars($link); 
      $pubDate = htmlspecialchars($pubDate); 

     // if you chose not to show the HTML 
     } else { 
      $title = strip_tags($title); 
      $description = strip_tags($description); 
      $link = strip_tags($link); 
      $pubDate = strip_tags($pubDate); 
     } 

     // fill the innerData array 
     $innerData["title"] = $title; 
     $innerData["description"] = $description; 
     $innerData["link"] = $link; 
     $innerData["pubDate"] = $pubDate; 

     // fill one index of the outerData array 
     $outerData["data".$counter] = $innerData; 

     // make all the variables blank for the next iteration of the loop 
     $title = ""; 
     $description = ""; 
     $link = ""; 
     $pubDate = ""; 
     $insideitem = false; 

     // add one to the counter 
     $counter++; 
    } 
} 

function characterData($parser, $data) { 
    global $insideitem, $tag, $title, $description, $link, $pubDate; 
    if ($insideitem) { 
    switch ($tag) { 
     case "TITLE": 
     $title .= $data; 
     break; 
     case "DESCRIPTION": 
     $description .= $data; 
     break; 
     case "LINK": 
     $link .= $data; 
     break; 
     case "PUBDATE": 
     $pubDate .= $data; 
     break; 
    } 
    } 
} 


// Create an XML parser 
$xml_parser = xml_parser_create(); 

// Set the functions to handle opening and closing tags 
xml_set_element_handler($xml_parser, "startElement", "endElement"); 

// Set the function to handle blocks of character data 
xml_set_character_data_handler($xml_parser, "characterData"); 

// if you started with feed:// fix it to html:// 



// Open the XML file for reading 
$feedzeroFp = fopen($feedzero, 'r') or die("Error reading RSS data."); 
$feedoneFp = fopen($feedone, 'r') or die("Error reading RSS data."); 
$feedtwoFp = fopen($feedtwo, 'r') or die("Error reading RSS data."); 
$feedthreeFp = fopen($feedthree, 'r') or die("Error reading RSS data."); 
$feedfourFp = fopen($feedfour, 'r') or die("Error reading RSS data."); 
// Read the XML file 4KB at a time 
while ($data = fread($feedoneFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedoneFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedoneFp); 

while ($data = fread($feedtwoFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedtwoFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedtwoFp); 
while ($data = fread($feedthreeFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedthreeFp)) 
     //Handle errors in parsing 
     or die(sprintfs("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedthreeFp); 
while ($data = fread($feedfourFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedfourFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedfourFp); 



// Free up memory used by the XML parser 
xml_parser_free($xml_parser); 

?> 

답변

0

에 /yournewsflow/news/political.php 당신은 동일한 "파서"의 youve 이미 파일의 기능을 정의하기 때문에 두 번 이상 필요하지 못할. 실제 페이지의 PHP 파일에서

function startElement($parser, $name, $attrs) { 
    global $insideitem, $tag, $title, $description, $link, $pubDate; 
    if ($insideitem) { 
     $tag = $name; 
    } elseif ($name == "ITEM") { 
     $insideitem = true; 
    } } 
function endElement($parser, $name) { 
    global $insideitem, $tag, $counter, $show, $showHTML, $outerData; 
    global $title, $description, $link, $pubDate; 
    if ($name == "ITEM" && $counter < $show) { 
     echo "<table> 
       <tr> 
        <td> 

     <a href=\"".htmlspecialchars($description)."\">".htmlspecialchars($description)."</a> 
        </td> 
       </tr>"; 


     // if you chose to show the HTML 
     if ($showHTML) { 
      $title = htmlspecialchars($title); 
      $description = htmlspecialchars($description); 
      $link = htmlspecialchars($link); 
      $pubDate = htmlspecialchars($pubDate); 

     // if you chose not to show the HTML 
     } else { 
      $title = strip_tags($title); 
      $description = strip_tags($description); 
      $link = strip_tags($link); 
      $pubDate = strip_tags($pubDate); 
     } 

     // fill the innerData array 
     $innerData["title"] = $title; 
     $innerData["description"] = $description; 
     $innerData["link"] = $link; 
     $innerData["pubDate"] = $pubDate; 

     // fill one index of the outerData array 
     $outerData["data".$counter] = $innerData; 

     // make all the variables blank for the next iteration of the loop 
     $title = ""; 
     $description = ""; 
     $link = ""; 
     $pubDate = ""; 
     $insideitem = false; 

     // add one to the counter 
     $counter++; 
    } 
} 

function characterData($parser, $data) { 
    global $insideitem, $tag, $title, $description, $link, $pubDate; 
    if ($insideitem) { 
    switch ($tag) { 
     case "TITLE": 
     $title .= $data; 
     break; 
     case "DESCRIPTION": 
     $description .= $data; 
     break; 
     case "LINK": 
     $link .= $data; 
     break; 
     case "PUBDATE": 
     $pubDate .= $data; 
     break; 
    } 
    } 
} 

: parser.functions.php에서

: 당신은 당신의 코드를 재구성 할 필요가

$tag = ""; 
$title = ""; 
$description = ""; 
$link = ""; 
$pubDate = ""; 
$show= 50; 
$feedzero = "http://feeds.finance.yahoo.com/rss/2.0/category-stocks?region=US&lang=en-US"; $feedone = "http://feeds.finance.yahoo.com/rss/2.0/category-ideas-and-strategies?region=US&lang=en-US"; 
$feedtwo = "http://feeds.finance.yahoo.com/rss/2.0/category-earnings?region=US&lang=en-US"; $feedthree = "http://feeds.finance.yahoo.com/rss/2.0/category-bonds?region=US&lang=en-US"; 
$feedfour = "http://feeds.finance.yahoo.com/rss/2.0/category-economy-govt-and-policy?region=US&lang=en-US"; 

$insideitem = false; 
$counter = 0; 
$outerData; 

require_once('path/to/parser.functions.php'); 

// Create an XML parser 
$xml_parser = xml_parser_create(); 

// Set the functions to handle opening and closing tags 
xml_set_element_handler($xml_parser, "startElement", "endElement"); 

// Set the function to handle blocks of character data 
xml_set_character_data_handler($xml_parser, "characterData"); 

// if you started with feed:// fix it to html:// 



// Open the XML file for reading 
$feedzeroFp = fopen($feedzero, 'r') or die("Error reading RSS data."); 
$feedoneFp = fopen($feedone, 'r') or die("Error reading RSS data."); 
$feedtwoFp = fopen($feedtwo, 'r') or die("Error reading RSS data."); 
$feedthreeFp = fopen($feedthree, 'r') or die("Error reading RSS data."); 
$feedfourFp = fopen($feedfour, 'r') or die("Error reading RSS data."); 
// Read the XML file 4KB at a time 
while ($data = fread($feedoneFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedoneFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedoneFp); 

while ($data = fread($feedtwoFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedtwoFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedtwoFp); 
while ($data = fread($feedthreeFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedthreeFp)) 
     //Handle errors in parsing 
     or die(sprintfs("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedthreeFp); 
while ($data = fread($feedfourFp, 4096)) 
//Parse each 4KB chunk with the XML parser created above 
    xml_parse($xml_parser,$data,feof($feedfourFp)) 
     //Handle errors in parsing 
     or die(sprintf("XML error: %s at line %d", 
      xml_error_string(xml_get_error_code($xml_parser)), 
      xml_get_current_line_number($xml_parser))); 



// Close the XML file 
fclose($feedfourFp); 



// Free up memory used by the XML parser 
xml_parser_free($xml_parser); 
0

이것은 startElement가 이미 정의 된 기능을 의미한다. 같은 이름의 함수는 둘 이상있을 수 없습니다.