замена php xpath не имеет определенного значения - PullRequest
0 голосов
/ 04 апреля 2019

Вот мой код:

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

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

Там, где есть такое значение "Если набрать «hike & trail» в теге <h2> и заменить его на тег <h1>, текст не отображается.

"&" или & вызывает разрыв замены, $header->nodeValue

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

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

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

$replacement  ->appendXML("<h1>".htmlentities($header->nodeValue)."</h1>");
0 голосов
/ 04 апреля 2019

Я решил проблему с помощью этого:

$replacement  ->appendXML("<h1>".htmlspecialchars($header->nodeValue)."</h1>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...