2017-06-01 135 views
0

我想检查只包含英文字母,数字和符号的字符串。我在代码下面尝试,但只有当所有字符都是不同的语言时才起作用。检查字符串是否仅包含英文字母,数字和符号

if(strlen($string) != mb_strlen($string, 'utf-8')) 
    { 
echo "No English words "; 
    } 
    else { 
echo "only english words"; 
    } 

例如

1. hellow hi 123#[email protected]#[email protected]#()#@# -- true 
2. ព្រាប សុវ ok yes #@# - false 
3. this is good 123 - true 
4. ព្រាប -- false 

PS:我的问题是不重复的,因为其他的问题只涉及字母和符号,矿山占地面积符号太

+1

https://stackoverflow.com/questions/9351306/how-to-check-if-a-php-string-contains-only-english-letters-and-digits这应该是你的情况 – 2017-06-01 08:03:13

+0

可能的重复[如何检查,如果一个PHP字符串包含onl y英文字母和数字?](https://stackoverflow.com/questions/9351306/how-to-check-if-a-php-string-contains-only-english-letters-and-digits) –

+0

@IvanFranchi和kris:它不包括符号 – Vishnu

回答

1

将确定一个字符串就是可打印的ASCII工作?如果是这样你可以使用这个表达式:

[ -~] 

http://www.catonmat.net/blog/my-favorite-regex/

如果您需要非ASCII字符和比你可以使用维基百科页面来获得您所需要的特定的Unicode格式:

https://en.wikipedia.org/wiki/List_of_Unicode_characters#Control_codes

+0

$ ok = preg_match('/ [ - 〜] /',“ព្រាបសុវok ok”); echo $ ok;它也返回1 – Vishnu

+0

@Vishnu在这种情况下,您需要锚定正则表达式。尝试'preg_match('/^[ - 〜] * $ /',$ text);'。 – Phylogenesis

相关问题