2014-09-02 98 views
0

我希望编写检查一个变量是否只包含字母不是字符不是数字的PHP代码,我已经输入这一点,但它不工作:通过不使用额日格如何检查一个字符串是否只包含PHP中的字母?

$myVar = "Var#iable5"; 

ereg(^[a-zA-Z] , $myVar) 
+6

旁注:['ereg()'](http://php.net/manual/en/function.ereg.php)已弃用。 *“这个函数从PHP 5.3.0开始已经被拒绝了,依赖这个特性是非常不鼓励的。”* – 2014-09-02 17:17:45

+1

你能定义“字母”而不是“字符”吗?是一封信吗?是Σ? – 2014-09-02 17:20:34

+1

@mattgibson - 或者老ß? – Anthony 2014-09-02 17:28:58

回答

1

开始()。这几年已经被贬低了,并且会在某些时候从PHP中删除。另外,你的模式是不正确的。当你使用它的时候是^是一个模式锚,意味着“开始行”。

你想:

preg_match('/[^a-zA-Z]/', $myVar) 

代替。作为[]组中的第一个字符,^意思是“不是”,所以“不是a-zA-z”,而不是你在尝试时的“[a-zA-Z]在行首”。

+0

您输入的函数返回TRUE。它不应该。 – Montoolivo 2014-09-02 17:26:17

6

无需正则表达式:

$result = ctype_alpha($myVar); 
+0

+1终于!保持低水平 – Anthony 2014-09-02 17:27:18

2

PHP有一个内置的功能,要做到这一点:ctype_alpha

$myVar = "Var#iable5"; 
var_dump (ctype_alpha($myVar)); // false 

从文档:

检查是否所有的字符在提供的字符串中,文字是字母。在标准C语言环境中,如果$ text只是单个字符,但其他语言包含字母,则标准C语言环境中的字母仅为[A-Za-z],ctype_alpha()与(ctype_upper($ text)|| ctype_lower($ text)那些被认为既不是大写也不是小写。

相关问题