我正在从一个url构建一个提要,所以我接受所有的html内容(使用"file_get_contents"php函数)。然后我对内容进行一些剪辑,并取出我需要的内容。
我似乎对口音有意见。事实上,XML页面返回了以下错误:"未定义实体'igrave'",其中html为&迁移;("ì"的html代码)。ograve也是如此。。。
那么,我是要用str_replace处理所有内容,还是有一个编码/解码功能来解决所有可能的问题?
Xml不知道(X)HTML中的命名实体。如果出现此错误,则提要无效,应予以修复。
作为一种变通方法,您可以从PHP获取翻译表,并将其与str_replace()一起使用。
function decodeNamedEntities($string) {
static $entities = NULL;
if (NULL === $entities) {
$entities = array_flip(
array_diff(
get_html_translation_table(HTML_ENTITIES, ENT_COMPAT | ENT_HTML401, 'UTF-8'),
get_html_translation_table(HTML_ENTITIES, ENT_COMPAT | ENT_XML1, 'UTF-8')
)
);
}
return str_replace(array_keys($entities), $entities, $string);
}
var_dump(decodeNamedEntities('<b><ähhh/gt;</b>'));
输出:
string(20) "<b><ähhh/gt;</b>"