如何确定一个字符串中是否包含外文字符(非英文字母)?

3
我正在将谷歌地图的结果存储在我的数据库中,谷歌有时会返回特殊字符,因此我尝试在存储到数据库之前先使用encodeURI(string)进行编码。但是,它会将空格包括在内进行编码,这使得在数据库中读取值变得困难。
如您所见,一些行中的空格也被编码为%20。如何识别哪些字符串具有特殊字符,以便只对这些行进行编码,而使用相同字母表的其他行保持不变?是否有任何高效的方法?
2014年3月10日编辑: 这是我刚刚做的解决方案:
$unreadable_characters = array("%20", "%27", "%2E", "%2C", "_");
    $readable_characters = array(" ", "'", ".", ",", " ");

//然后使用str_replace将所有这些字符更改为可读格式:

$keyword = str_replace($unreadable_characters, $readable_characters, $value[0]);

使用urldecode()函数从数据库检索值时,仍然可以在用户界面中输出正确的字符串 :)

不要添加逻辑,你应该尝试让MySQL存储特殊字符。https://dev59.com/g0nSa4cB1Zd3GeqPNmeq - actual_kangaroo
1个回答

7
我认为您可以使用正则表达式来检查字母:
var st = $('#id').val();
if(/^[a-zA-Z0-9- ]*$/.test(st) == false) {
    alert('string contains non english characters');
}

感谢您提供的解决方案!我认为那很好!虽然我的操作只是在将它们插入数据库之前进行替换,以得到更清晰的视图,像这样:$unreadable_characters = array("%20", "%27", "%2E", "%2C", "_"); $readable_characters = array(" ", "'", ".", ",", " "); - Carmela
如何检查此字符串是否包含空格? - etotientz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接