2013-04-23 3 views
0

Я хотел бы иметь разные выходы, если файл вызывается Ajax или нет. Для этого у меня есть этот код ведьмой работает отлично:новый DomDocument() не работает с getElementsByTagName ('section');

/* AJAX check */ 
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    $content = get_content(); 
    die($content); 
} 

свою функцию для фильтрования утверждают, заключается в следующем:

function get_content(){ 
    //$file = file_get_contents('index.html'); //works better but i get only errors 
    $dom = new DomDocument(); 
    $dom->loadHTML($_SERVER['REQUEST_URI']); //or $file 
    $section= $dom->getElementsByTagName('section'); 
    return $section->item(0)->nodeValue; 
} 

мой выход всегда пуст. Неправильный телефон?

!!! Я не ищу обработку ошибок DOMDocument !!!!

Что я делаю сейчас является:

/* decide what the content should be up here .... */ 

/* AJAX check */ 
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    /* if ajax, show only content of the section tag */ 
    $file = file_get_contents($_SERVER['SCRIPT_FILENAME']); 
    $section = preg_replace("/.*<section[^>]*>|<\/section>.*/si", "", $file); 
    die($section); 
} 

/* not ajax, show page.... */ 

и это похоже на работу. Я не знаю, что это лучшее решение, потому что где-то на этом форуме я читал, что лучше понять это с помощью DomDocument(). Любые предложения приветствуются?

Вот HTML-файл:

<!doctype html> 
<!-- Determine browser JS free --> 
<!-- HTML5 Mobile Boilerplate --> 
<!--[if IEMobile 7]><html class="no-js iem7"><![endif]--> 
<!--[if (gt IEMobile 7)|!(IEMobile)]><!--><html class="no-js" lang="en"><!--<![endif]--> 

<!-- HTML5 Boilerplate --> 
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 
<!--[if (IE 7)&!(IEMobile)]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]--> 
<!--[if (IE 8)&!(IEMobile)]><html class="no-js lt-ie9" lang="en"><![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"><!--<![endif]--> 


<head> 
        <meta charset="utf-8"> 
      <title>title</title> 


      <link rel="stylesheet" type="text/css" href="../css/style.css"> 
      <link rel="shortcut icon" href="img/base/favicon.html" /> 
      <link rel="apple-touch-icon-precomposed" href="img/base/apple-touch-icon-57x57-precomposed.html" /> 
      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/base/apple-touch-icon-72x72-precomposed.html" /> 
      <link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/base/apple-touch-icon-114x114-precomposed.html" /> 
      <script src="/js/libs/modernizr.custom.js"></script> 
      <!--[if (IE 7)]> 
       <link rel="stylesheet" href="/css/fallback/icons-ie7.css"> 
      <![endif]--> 

      </head> 

    <body > 


     <section role="main"> 

    <header class="hero-banner"> 
     <img class="resize" src="/img/base/spacer-hero.png" rel="/img/designers/banners/cloe-banner3.jpg" alt="Cloe" /> 
     <noscript><img src="/img/designers/banners/cloe-banner3.jpg" alt="Cloe" /></noscript> 
     <hgroup> 
      <h1>Claudia</h1> 
      <h2 class="text-hl">Designerin</h2> 
     </hgroup> 
    </header> 


     </section> 



     <footer role="contentinfo"> 


      <p><small>&copy;2013 joe</small></p> 
      <p><small>Our website uses delicious cookies to improve your experience. We'll assume you're ok with that.</small></p> 


     </footer> 


     <!-- jQuery from Google's CDN with local fallback --> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
     <script>window.jQuery || document.write('<script src="/js/libs/jquery-1.8.3.min.js"><\/script>')</script> 

     <script src="/js/libs/wfl.js"></script> 

     <!-- Initialises scripts from plugins.js and helper.js --> 
     <script src="/js/script.js"></script> 

     <!-- Google Goggles --> 


    </body> 

</html> 
+0

Вы должны показать содержимое HTML файла. – Virus721

+0

@ Virus721 ??? how – hamburger

+0

Разве вы не знаете содержимое файла? Если нет, почему вы пытаетесь получить теги раздела? – Virus721

ответ

0

Вы можете включить ошибки устанавливая внутренние ошибки истины:

$doc = new DOMDocument; 

$before = libxml_use_internal_errors(true); 
$doc->loadHTML($html); 
libxml_use_internal_errors($before); 

Вы тогда не будете ошибка регистрируется больше. В вашем случае, скорее всего, у вас есть ошибки отображения, которые могут быть в порядке для разработки, но на вашем рабочем сервере, пожалуйста, переключитесь на регистрацию ошибок, иначе ваш веб-сайт будет показывать слишком много данных снаружи.

Смотрите так же:

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