我希望编写检查一个变量是否只包含字母不是字符不是数字的PHP代码,我已经输入这一点,但它不工作:通过不使用额日格如何检查一个字符串是否只包含PHP中的字母?
$myVar = "Var#iable5";
ereg(^[a-zA-Z] , $myVar)
我希望编写检查一个变量是否只包含字母不是字符不是数字的PHP代码,我已经输入这一点,但它不工作:通过不使用额日格如何检查一个字符串是否只包含PHP中的字母?
$myVar = "Var#iable5";
ereg(^[a-zA-Z] , $myVar)
开始()。这几年已经被贬低了,并且会在某些时候从PHP中删除。另外,你的模式是不正确的。当你使用它的时候是^
是一个模式锚,意味着“开始行”。
你想:
preg_match('/[^a-zA-Z]/', $myVar)
代替。作为[]
组中的第一个字符,^
意思是“不是”,所以“不是a-zA-z”,而不是你在尝试时的“[a-zA-Z]在行首”。
您输入的函数返回TRUE。它不应该。 – Montoolivo 2014-09-02 17:26:17
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)那些被认为既不是大写也不是小写。
旁注:['ereg()'](http://php.net/manual/en/function.ereg.php)已弃用。 *“这个函数从PHP 5.3.0开始已经被拒绝了,依赖这个特性是非常不鼓励的。”* – 2014-09-02 17:17:45
你能定义“字母”而不是“字符”吗?是一封信吗?是Σ? – 2014-09-02 17:20:34
@mattgibson - 或者老ß? – Anthony 2014-09-02 17:28:58