Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文件名中字符省略号的XML输出_Php_Xml - Fatal编程技术网

Php 文件名中字符省略号的XML输出

Php 文件名中字符省略号的XML输出,php,xml,Php,Xml,我喜欢用XML打印出特殊字符省略号。如果它是硬编码的,它就可以工作。但是如果我从readdir得到这个角色。这行不通。为什么? 代码: 编辑变通方法: 因此,我的解决方案或解决办法,这个问题。通过组合这个函数,我发现 和 iconv(mb_detect_encoding($file, "auto"), 'UTF-8', $file); 我解决了我的问题。所以基本上我先对所有字符进行编码,这会导致iconv出现问题,所以我以后可以安全地使用它 所以像这样使用它: $file= xml_chara

我喜欢用XML打印出特殊字符省略号。如果它是硬编码的,它就可以工作。但是如果我从readdir得到这个角色。这行不通。为什么?

代码:

编辑变通方法: 因此,我的解决方案或解决办法,这个问题。通过组合这个函数,我发现

iconv(mb_detect_encoding($file, "auto"), 'UTF-8', $file);
我解决了我的问题。所以基本上我先对所有字符进行编码,这会导致iconv出现问题,所以我以后可以安全地使用它

所以像这样使用它:

$file= xml_character_encode($file);
$file= iconv(mb_detect_encoding($file, "auto"), 'UTF-8', $file);

我试图手动替换字符省略号,因为它似乎是唯一一个无法用utf8\u encode和htmlspecialchars正确显示的特殊字符,如果省略号可以正确显示,这是我唯一需要的两个函数,但无法用strtr完成。

已经尝试使用相应的数字标识&8230;,或者定义您自己的命名实体?是。就是这样。我只是想知道,如果它从readdir获得它,为什么它不起作用。啊,忽略了readdir。这很可能返回单字节编码的文件名,但您正在流式传输多字节UTF-8XML。在回显之前尝试将$file转换为多字节,例如使用iconv.Hi。尤尔根。谢谢,它是这样工作的。我使用了iconvmb\u detect\u编码$file,auto,'UTF-8',$file。只是注意到iconv不是一个好的解决方法。如果文件名包含äöü等字符,则会打印出错误。
An invalid character was found in text content.
function xml_character_encode($string, $trans='') {
    $trans=(is_array($trans)) ? $trans : get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
    foreach ($trans as $k=>$v) $trans[$k]= "&#".ord($k).";";
    return strtr($string, $trans);
}
iconv(mb_detect_encoding($file, "auto"), 'UTF-8', $file);
$file= xml_character_encode($file);
$file= iconv(mb_detect_encoding($file, "auto"), 'UTF-8', $file);