我在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;
}
?>
答案 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]
。这意味着'匹配任何字符而不是其他'。
答案 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);
}