red*_*ent 6 php escaping character-encoding special-characters
我正在尝试在页面上显示数据Feed.我们遇到了奇怪角色的编码问题.出于某种原因,在饲料中有U+FFFD角色.并且htmlentities()不会逃避角色,所以我需要手动更换它.(我使用的是PHP 5.3)
我尝试过以下方法:
$string = str_replace( "\xFFFD", "_", $string );
$string = str_replace( "\XFFFD", "_", $string );
$string = str_replace( "\uFFFD", "_", $string );
$string = str_replace("\x{FFFD}", "_", $string );
$string = str_replace("\X{FFFD}", "_", $string );
$string = str_replace("\P{FFFD}", "_", $string );
$string = str_replace("\p{FFFD}", "_", $string );
Run Code Online (Sandbox Code Playgroud)
以上都不是.
阅读本页后 - http://php.net/manual/en/regexp.reference.unicode.php - 我不确定我做错了什么.我是否需要将UTF-8支持编译到PCRE中?
您应该尝试修复原始问题,FFFD(unicode替换字符)在大多数情况下并不是真正的文本字符,而是一个尝试以UTF编码解码但是实际上没有编码的东西的符号UTF编码.它是一种替代方法,可以无声地丢弃无效字节或完全停止解码过程,无论哪种方式,如果您看到它,都会出现错误.
无法知道原始角色是什么.特别是使用您的解决方案,因为您更换了字符_,您甚至无法知道原始源被错误地解码.您应该返回源并正确解码.
注意:源文本可以?用作文字,普通字符,例如在谈论它时,那么就没有错误.我在答案中排除了这种可能性.
使用preg_replace,如下所示:
$string = preg_replace('@\x{FFFD}@u', '_', $string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9132 次 |
| 最近记录: |