首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Google翻译中删除所有意外字符

从Google翻译中删除所有意外字符
EN

Stack Overflow用户
提问于 2019-07-03 15:45:58
回答 1查看 375关注 0票数 1

我正在使用谷歌翻译来翻译一些文本。

有时,Google翻译器会在翻译后的文本中添加不可打印的字符。

例如,转到此页面:https://www.google.com/search?client=ubuntu&channel=fs&q=traduttore&ie=utf-8&oe=utf-8

选择从意大利语到英语并翻译leone marino

结果将是:

代码语言:javascript
复制
sea ​​lion
   ^ here there are other two non-printable chars, exactly before the "l" char

你可以通过将文本放在任何你可以改变它的地方(例如,在文本编辑器中,或者在任何网页的文本字段中,甚至在浏览器的url中)来测试它,然后用键盘上的箭头移动,你会注意到光标在靠近空格字符的地方停了两次。

抛开插入这些字符的原因不谈,如何在PHP中使用正则表达式和/或使用sublime文本来删除所有这些不可打印的字符?

还有,如何查看这些字符的unicode版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 15:52:38

要删除您可以使用的所有other format Unicode chars

代码语言:javascript
复制
$s = preg_replace('~\p{Cf}+~u', '', $s);

由于您希望删除宽度为零的空格,因此可以只使用

代码语言:javascript
复制
$s = str_replace("\u{200B}", "", $s);

我使用https://r12a.github.io/app-conversion/ (无从属关系)检查字符串中的隐藏字符:

可以使用PHP代码将字符串转换为\uXXXX表示形式,以便快速查看非ASCII字符的Unicode代码点:

代码语言:javascript
复制
$input = "sea ​​lion";
echo preg_replace_callback('#[^ -~]#u', function($m) {
    return substr(json_encode($m[0]), 1, -1);
}, $input); 
// => sea \u200b\u200blion
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56865298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档