2011-01-14 3 views
0
function rseo_get_seo($check, $post){ 
//code breaks somewhere in here. or in the rseo_doTheParse function. 
switch ($check) 
{ 
case "h1": return rseo_doTheParse('h1', $post); 
case "h2": return rseo_doTheParse('h2', $post); 
case "h3": return rseo_doTheParse('h3', $post); 
case "img-alt": return rseo_doTheParse('img-alt', $post); 
} 
} 

function rseo_doTheParse($heading, $post){ 
    try { //I get a FATAL error here. unexpected '{' 
     $content = $post->post_content; 

     if ($content == "") return false; 

     $keyword = trim(strtolower(rseo_getKeyword($post))); 
     @$dom = new DOMDocument; 
     @$dom->loadHTML(strtolower($post->post_content)); 
     $xPath = new DOMXPath(@$dom); 

     switch ($heading) 
     { 
      case "img-alt": return $xPath->evaluate('boolean(//img[contains(@alt, "'.$keyword.'")])'); 
      default: return $xPath->evaluate('boolean(/html/body//'.$heading.'[contains(.,"'.$keyword.'")])'); 
     } 
    } 
    catch (Exception $e) 
    { 
     echo 'Exception caught: ', $e->getMessage(), "\n"; 
    } 
} 
+3

작동 [here] (http://ideone.com/PjAqO) – marcog

+0

우연히 PHP 4를 사용하지 않으십니까? – NikiC

+0

이것은 이상합니다. 이 함수 위의 코드도 확인 했습니까? 그것은 unclosed 함수, if 절 등으로 인해 발생할 수 있습니다. - 확실하지는 않지만이 코드 조각이 올바르게 보입니다. 편집 : marcog의 대답은 또한이 코드 조각과는 아무런 관련이 없음을 강조합니다. 그래서 다른 곳을 조사해야합니다. – Paul

답변

6

제가 생각할 수있는 유일한 것은 PHP 4에서 예외 처리를 지원하지 않는다는 것입니다. 따라서 try은 일종의 것으로 생각되지만 {이있을 것으로는 기대하지 않습니다.

당신은 구문 분석 오류가 아닌 치명적인 오류를 입수했습니다해야합니다.

+0

+1 그 OP가 설명하는 정확한 지점에서 정확한 오류가 발생합니다. – webbiedave

+0

OP는 '구문 분석'을해야합니다. 치명적은 런타임 오류입니다. – webbiedave

+0

올바른 해결책이어야합니다. 오래된 함수/절이 닫히지 않으면 일반적으로 더 많은 오류가 나타납니다. – Paul

0

새로운 파일에 코드를 붙여 넣었습니다. 오류가 없습니다. 문제가 코드보다 높을 수 있습니까?

0

스위치 블록 뒤의 14 번째 라인. 두 번째를 catch 블록 바로 앞에서 제거하십시오.

+0

''시도'를 닫습니다. – webbiedave

+0

1}은 스위치를위한 것이고, 두 번째는 시도의 끝입니다. 그럼 좋을거야, 그렇지? – Nanne

1

해당 코드는 100 % 유효합니다. 아마도 그 오류는 다른 곳에있을 것입니다. 보조 노트에서 DOM 함수는 예외를 throw하지 않습니다. libxml_use_internal_errors을보고 예외를 throw하도록 설정할 수 있습니다.