2011-01-14 8 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

作品[こちら](http://ideone.com/PjAqO) – marcog

+0

偶然にPHP 4を使用していませんか? – NikiC

+0

これは奇妙です。この関数の上のコードもチェックしたことはありますか?閉鎖されていない関数、if節などのために起こる可能性があります - 私は分かりませんが、このコードは正しく見えます。編集:marcogの答えはまた、このコードの部分とは何の関係もないことを強調しています。だからあなたはどこか別の場所を調べるべきです。 – Paul

答えて

6

私が考えることができるのは、例外処理をサポートしていないPHP 4を使用していることだけです。したがって、tryは何らかの定数であると考えていますが、{がそこにあるとは思われません。

を解析すると、というエラーが発生するはずです。は致命的なエラーです。

+0

+1これは、OPが記述する正確な場所で正確なエラーになります。 – webbiedave

+0

OPは 'parse'と言っています。致命的なのはランタイムエラーです。 – webbiedave

+0

これは正しい解決策であるはずです。通常、古い関数/句が閉じられていなければ、より多くのエラーが表示されます。 – Paul

0

コードを新しいファイルに貼り付けて実行しました。エラーはありません。問題はあなたのコードの上にあるかもしれませんか?

0

スイッチブロックの後の14行目。 2番目の}をキャッチブロックの直前で削除する

+0

これは '}'を閉じます。 – webbiedave

+0

1}はスイッチ用、2番目は試行の終了です。それはいいはずですね。 – Nanne

1

そのコードは100%有効です。おそらく、エラーは他の場所にあります。注意点として、DOM関数は例外をスローしません。libxml_use_internal_errorsを調べ、例外をスローするように設定することをお勧めします。

関連する問題