我尝试解析一个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");
}
答案 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;