我正在使用Google翻译来翻译一些文本。
有时,Google翻译人员会在翻译后的文本中添加不可打印的字符。
例如,转到此页面: https://www.google.com/search?client=ubuntu&channel=fs&q=traduttore&ie=utf-8&oe=utf-8
从意大利语选择英语,然后翻译leone marino
。
结果将是:
sea lion
^ here there are other two non-printable chars, exactly before the "l" char
您可以通过以下方式进行测试:将文本放在可以更改文本的任何位置(例如,在文本编辑器或任何网页的文本字段中,甚至在浏览器URL中),然后使用键盘箭头移动,您会注意到光标将停在靠近该空格字符的位置两次。
撇开插入这些字符的原因,我如何使用带有PHP的Regex和/或使用崇高的文本来删除所有这些不可打印的字符?
然后,如何查看这些字符的unicode版本?
答案 0 :(得分:2)
要删除所有other format Unicode chars,您可以使用
$s = preg_replace('~\p{Cf}+~u', '', $s);
由于您要删除宽度为零的空格,因此可以只使用
$s = str_replace("\u{200B}", "", $s);
我使用https://r12a.github.io/app-conversion/(无从属关系)检查字符串中的隐藏字符:
可能的PHP代码将字符串转换为\uXXXX
表示形式,以快速查看非ASCII字符的Unicode代码点:
$input = "sea lion";
echo preg_replace_callback('#[^ -~]#u', function($m) {
return substr(json_encode($m[0]), 1, -1);
}, $input);
// => sea \u200b\u200blion