2013-03-19 4 views
0

Я стремлюсь заполнить HTML элемент определенного станд HTML класса с содержаниемцелевой HTML класс и наполняются содержанием DomDocument

Этот ответ имеет довольно сложный CONCAT XPATH запрос: Using DOMDocument to extract from HTML document by class

Это расширение класса получите и заполнить HTML красиво: https://gist.github.com/j0shua/945507

Это пример HTML я работаю с:

 <!-- actual content of the page box --> 
    <div class="masterWidthSet mainContent"> 
     <div class="mainPageContent"> 
      <script type="text/javascript" src="/email_js.js"></script> 

      <b>Contact us all at the same time...</b><br/> 
      <div class="messageSent">Thank you for contacting us, we will get back to you as soon as possible.</div> 
      <table class="contactForm"> 
       <tr><td class="title">Name</td><td class="description"><input type="text" id="sendName" class="text" placeholder="Your name..."></td></tr> 

       <tr><td class="title">Number (optional)</td><td class="description"><input type="text" id="phoneNo" class="text"placeholder="Your number..."></td></tr> 

       <tr><td class="title">Email</td><td class="description"><input type="text" id="email" class="text"placeholder="Your email..."></td></tr> 

       <tr><td class="title">Message</td><td class="description"><textarea id="message" class="text"placeholder="Your message..."></textarea></td></tr> 

       <tr><td></td><td class="description"><input type="button" class="submit" value="Send us you message..." onclick="sendMessage()"/><span class="description messageStatus" id="messageStatus"></span></td></tr> 
      </table> 
     </div> 
    </div> 

я могу легко получить innHTML элемента с одним классом «mainPageContent»:

require_once WEBROOT_PRIVATE.'scripts/JSLikeHTMLElement.php'; 
$dom = new \DOMDocument(); 
$dom->registerNodeClass('DOMElement', 'JSLikeHTMLElement'); 
$dom->loadHTML(file_get_contents($file['local_path'])); 
$xpath = new \DOMXPath($dom); 
$elem = $xpath->query('//*[@class="mainPageContent"]')->item(0); 
echo $elem->innerHTML; 

Но как только я пытаюсь целевой элемент с несколькими классами возвращает нуль (Я предполагаю, потому что запрос ищет точное совпадение), например, «MainContent»:

$elem = $xpath->query('//*[@class="mainContent"]')->item(0); 

Так что я пытался использовать запрос Concat из верхнего поста, но я получаю „вызов функции элемент элемента()“:

$elem = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' mainContent ')")->item(0); 

Так я попытался это:

$elem = $xpath->query('//*[class~="mainContent"]')->item(0); 

Проблема заключается в каждый раз, когда пункт (0) приводит к ошибке:

Call to a member function item() on a non-object

Этот парень говорит пути я пытался должен работать. . Selecting a css class with xpath

Может ли кто-нибудь указать мне правильное направление?

Спасибо, J

ответ

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

  • Нет связанных вопросов^_^