DOMDocument警告解析html文本实体'nbsp'未定义

时间:2015-05-21 04:27:51

标签: php dom domdocument

我尝试解析一个utf-8 html文本,但是我收到了这个错误

  

警告:DOMDocumentFragment :: appendXML():实体:第1行:解析器   错误:实体'nbsp'未定义

我定义:

$dom = new DOMDocument();
$dom->loadHtml(mb_convert_encoding($richText, 'HTML-ENTITIES', "UTF-8"));

这是完整的代码:

function putBetweenText($richText,$webinfo,$url,$keywords,$type = null,$display,$inline)
{

$dom = new DOMDocument();
$dom->loadHtml(mb_convert_encoding($richText, 'HTML-ENTITIES', "UTF-8"));

$xpath = new DOMXPath($dom);
foreach($xpath->query('//text()[not(ancestor::a)]') as $node)
{
    $replaced = str_ireplace('.', '.'.randomText($webinfo,$url,$richText,null,$display,$inline), $node->wholeText);
    $newNode  = $dom->createDocumentFragment();
    $newNode->appendXML($replaced);
    $node->parentNode->replaceChild($newNode, $node);
}
return mb_substr($dom->saveXML($xpath->query('//body')->item(0)), 6, -7, "UTF-8");

}

1 个答案:

答案 0 :(得分:-6)

变化:

putBetweenText($richText,$webinfo,$url,$keywords,$type = null,$display,$inline)

为:

 putBetweenText($richText, $webinfo, $url, $keywords, $type , $display, $inline)

你可以调用类似的函数:

putBetweenText('rich text value', $webinfo_setFromHere, 'http://www.google.com', $keywords_array, 'integer' , 'TRUE', $makeIt_inline)
无论身在何处,

都不在echo语句中。

你不能将变量赋值放入函数中,你只能通过说全局来传递它们,或者说它们来自函数外部($ var1,$ var2,$ var3)。

$ type = null是非法的。 您应该分配正在接收的变量,但不会传递给函数,如:global $ a,$ b;