首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只允许php中的英文字母和数字

问只允许php中的英文字母和数字
EN

Stack Overflow用户
提问于 2015-10-02 16:39:39
回答 2查看 4.9K关注 0票数 1

我试图创建一个过滤器,允许用户只使用英文字母(小写和大写)和数字。我怎么能这么做?(ANSI) (不是试图消毒,只是为了判断一个字符串是否包含非英语字母),这个过滤器应该给我一个干净的数据库,只有英文用户名,没有多字节和UTF-8字符。

有人能向我解释一下为什么echo strlen输出'2‘吗?意思是两个字节对吧?UTF-8字符不应该包含一个字节吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-02 16:50:11

这是如何检查字符串是否只包含英文字母中的字母。

代码语言:javascript
复制
if (!preg_match('/[^A-Za-z0-9]/', $string))  {
    //string contains only letters from the English alphabet
}

另一个问题是:

代码语言:javascript
复制
strlen(À)

不会回来的。也许你是说

代码语言:javascript
复制
strlen('À')

strlen返回

成功时字符串的长度,如果字符串为空,则为0。

取自这里。因此,该字符被解释为两个字符,可能是由于您的编码。

票数 2
EN

Stack Overflow用户

发布于 2015-10-02 16:44:54

您应该使用正则表达式来查看字符串是否与模式匹配。这个很简单:

代码语言:javascript
复制
if (preg_match('/^[a-zA-Z0-9]+$/', $username)) {
    echo 'Username is valid';
} else {
    echo 'Username is NOT valid';
}

strlen('À')等于2的原因是strlen不知道字符串是UTF-8。试着使用:

代码语言:javascript
复制
echo strlen(utf8_decode('À'));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32911875

复制
相关文章

相似问题

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