замена php xpath не несет определенного значения

#php #xml #xpath

#php #xml #xpath

Вопрос:

Вот мой код:

        $xpath_query = $xpath->query('//div[@class="paragraph-content"]//h2[1]');
       $i = 0;
       foreach($xpath_query as $header){ 
          if (!empty($header->nodeValue) amp;amp; $i == 0){
            $replacement  = $dom->createDocumentFragment();
            $replacement  ->appendXML("<h1>$header->nodeValue</h1>");
            $header->parentNode->replaceChild($replacement  , $header);
          }  
          $i  ;
       }
  

Я беру <h2> тег в xpath и заменяю его на <h1>

Там, где в <h2> теге есть значение, подобное этому «Набранному для hike amp; trail», и оно заменяется на <h1> tag, текст не отображается.

«amp;» или amp;amp приводит к прерыванию замены, $header->nodeValue

как я могу избежать $header->nodeValue , имея в виду, есть ли случаи в строке, где у меня есть <br> тег или amp;amp. Когда у меня есть <br> тег или есть amp; в тексте, это прерывает замену.

Ответ №1:

Возможно, вам потребуется убедиться, что объекты закодированы при создании HTML (я использовал htmlentities() )…

 $replacement  ->appendXML("<h1>".htmlentities($header->nodeValue)."</h1>");
  

Ответ №2:

Я решил проблему, используя это :

 $replacement  ->appendXML("<h1>".htmlspecialchars($header->nodeValue)."</h1>");