在php中区分字母数字和字母

时间:2012-03-30 14:54:40

标签: php regex string

我在php中有两个字符串我想在其中进行以下检查

1) 4f74adce2a4d2     - contains ***alphanumerics*** 

2) getAllInfo         - contains ***only alphabetic***  

检查这个我写了一个函数但是上面包含了$ pk包含的值,结果如何 仅限true,但i want to differentiate between alphanumeric and alphabetic only

<?php
if (ereg('[A-Za-z^0-9]', $pk)) {
    return true;
} else if (ereg('[A-Za-z0-9]', $pk)) {
    return false;
}
?>

4 个答案:

答案 0 :(得分:3)

使用以下两个函数来检测变量是字母还是字母:

// Alphabetic
if(ctype_alpha($string)){
    // This is Alphabetic   
}

// Alphanumeric
if(ctype_alnum($string)){
    // This is Alphanumeric 
}

请访问此链接以获取参考指南:http://php.net/manual/en/book.ctype.php

答案 1 :(得分:2)

如果您将插入符号(^)放在组([])内的任何位置,除了它被视为普通字符的第一个字符。所以,你的第一个正则表达式甚至匹配

466^qwe^aa
11123asdasd^aa
aaa^aaa
^^^

我认为这不是我想要的。只需删除插入符号0-9,这样您的第一个正则表达式就是[A-Za-z]。这意味着'匹配任何字符而不是其他'。

更新此外,正如Ben Carey指出的那样,使用内置的ctype扩展程序可以实现同样的效果。

答案 2 :(得分:2)

字母的Unicode属性为\pL,数字为\pN

if (preg_match('/^\pL+$/', $pk) return true;   // alphabetic
if (preg_match('/^[\pL\pN]+$/', $pk) return false;  // alphanumeric

答案 3 :(得分:0)

对于aphanumeric:

function isAlphaNumeric($str) {
   return !preg_match('/[^a-z0-9]/i', $str);
}

仅限字母:

function isAlpha($str) {
   return !preg_match('/[^a-z]/i', $str);
}