php xpath替换没有一定价值

时间:2019-04-04 18:44:27

标签: php xml xpath

这是我的代码:

       $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++;
       }

我要在xpath中抓取<h2>标记并将其替换为<h1>

<h2>标记中有一个类似“拨入远足和追踪”的值,并且将其替换为<h1>标记时,它不显示文本。

“&”或&amp导致替换项中断,$header->nodeValue

我如何转义$header->nodeValue,这意味着如果字符串中有包含<br>标签或&amp;的情况。当我有一个<br>标签或文本中有&时,它将中断替换。

2 个答案:

答案 0 :(得分:1)

您可能需要确保在创建HTML时对实体进行编码(我使用过htmlentities())...

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

答案 1 :(得分:0)

我已经使用以下方法解决了该问题:

  const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

  optimization: {
    minimizer: [ new UglifyJsPlugin() ],
  }