检查如果字符串包含允许的内容
问题描述:
在用户名以外的任何字符 - 我想只允许字母数字字符,并且我想其他10个UTF8字符。什么是适当的方式来做到这一点? UTF8会成为preg函数的问题,我需要使用另一种方法吗?检查如果字符串包含允许的内容
谢谢
答
我recently asked如何使这只是做正确的事,并了解到,这是相当多刺把一切完全正确。
如果你不能得到/\w/u
在Unicode上适合你,它主要是/[\pL\pM\p{Nd}\p{Nl}\p{Pc}]/u
。
答
Preg是你最好的选择。做一些这样的事情,替换随机的日文字符,我用你选择允许的字符。
if (preg_match('/[\x{0030}-\x{0039}\x{0041}-\x{005A}\x{0061}\-u007A]+/u', $subject)) {
return true;
}
return false;
如果需要使用正则表达式的表达式,然后我建议使用RegexBuddy,你可以在regexbuddy.com
答
得到适当的Unicode支持(包括适当的情况下,意识)帮助您需要使用'/u'
修改IIRC 。但是,但是,但是:要知道,大多数其他 PHP函数将把PHP字符串作为字节字符串(不是字符串),这意味着如果你在做喜欢的东西stripos()
你会得到字节偏移量指标,而不是字符索引,并且它们不能可靠地用于畸形的UTF-8(因为它们匹配字节序列而不是字符序列)。
另外请注意,UTF-8文字可能不是一个好主意,如果你需要在某个地方运行该脚本不使用UTF-8作为系统区域设置(Windows)中。
当你尝试它有用吗? – 2011-04-25 01:41:51