Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 从UTF-8字符串中去除不可打印的字符,以便在XML中使用_Php_Xml - Fatal编程技术网

Php 从UTF-8字符串中去除不可打印的字符,以便在XML中使用

Php 从UTF-8字符串中去除不可打印的字符,以便在XML中使用,php,xml,Php,Xml,XML流中的某些特殊字符可能会破坏它。我需要清理我想插入到这样一个流中的数据,以便1)它不会损坏2)其中的可打印UTF-8字符继续工作 我还需要在生成输出后立即刷新它,否则我将不得不在ram中保留大量内容 到现在为止,我做了一些类似的事情 $return = preg_replace('/[^\p{L}\s]/u', '', $return); 它删除了大部分不可打印的字符,但不是全部。我很难找出是什么字符导致了这个问题,但是当我遇到其中一个字符时,终端返回“1;2c” 你有没有更好的办法去除

XML流中的某些特殊字符可能会破坏它。我需要清理我想插入到这样一个流中的数据,以便1)它不会损坏2)其中的可打印UTF-8字符继续工作

我还需要在生成输出后立即刷新它,否则我将不得不在ram中保留大量内容

到现在为止,我做了一些类似的事情

$return = preg_replace('/[^\p{L}\s]/u', '', $return);
它删除了大部分不可打印的字符,但不是全部。我很难找出是什么字符导致了这个问题,但是当我遇到其中一个字符时,终端返回“1;2c”


你有没有更好的办法去除所有这些丑陋的角色?

不确定你走的是正确的道路

1.)为什么要以基于文本的格式传输不可打印(二进制?)数据

2.)检查CDATA是否有帮助

<node><![CDATA[ugly characters]]></node>

3.)使用base64将二进制数据转换为可打印字符

<node><?php echo base64_encode($uglyCharacters); ?></node>

您好,CDATA已经存在。我必须输出“原始”数据,而不是base64编码的数据。然而,我应该已经修复了。我把每个单词上的字符分别截短,然后把它们全部截短在一起。用代码Greping我发布了一个单词+最终输出的作品。我不知道怎么做,但它是有效的…;)