我正在使用谷歌翻译来翻译一些文本。
有时,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中使用正则表达式和/或使用sublime文本来删除所有这些不可打印的字符?
还有,如何查看这些字符的unicode版本?
发布于 2019-07-03 15:52:38
要删除您可以使用的所有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\u200blionhttps://stackoverflow.com/questions/56865298
复制相似问题