2011-01-14 2 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-clause и т. Д. - я не уверен, но этот фрагмент кода выглядит правильно. EDIT: ответ marcog также подчеркивает, что он не имеет ничего общего с этой частью кода. Поэтому вы должны исследовать где-то еще. – Paul

ответ

6

Единственное, что я могу придумать, это то, что вы на PHP 4, который не поддерживает обработку исключений. Поэтому он считает, что try - это какая-то константа, но не ожидает, что там будет {.

Вы должны получили разбор ошибку, не фатальных ошибки.

+0

+1 Это приведет к точной ошибке в точном месте, которое описывает OP. – webbiedave

+0

За исключением того, что OP должен был сказать 'parse'. Fatal - ошибка во время выполнения. – webbiedave

+0

Это должно быть правильное решение. Обычно появляется больше ошибок, если не было закрытой старой функции/clause. – Paul

0

Я вставил код в новый файл и запустил его: нет ошибки. Проблема может быть выше вашего кода?

0

Строка 14 после блока переключателя. Удалить второй} непосредственно перед блоком catch

+0

Это '' 'закрывает' try'. – webbiedave

+0

1} для коммутатора, второй - конец попытки. Так должно быть хорошо, правда? – Nanne

1

Этот код действителен на 100%. Возможно, ошибка в другом месте. С другой стороны, функции DOM не генерируют исключений - вы можете посмотреть в libxml_use_internal_errors и настроить его для исключения исключений.

Смежные вопросы