如何获得仅包含a到z,A到Z,0到9以及一些符号的字符串?
答案 0 :(得分:26)
您可以按以下方式对其进行过滤:
$text = preg_replace("/[^a-zA-Z0-9]+/", "", $text);
至于 某些符号 ,您应该 更多 具体
答案 1 :(得分:25)
您可以使用$str
测试字符串(preg_match
}:
if(preg_match("/^[a-zA-Z0-9]+$/", $str) == 1) {
// string only contain the a to z , A to Z, 0 to 9
}
如果您需要更多符号,可以在]
答案 2 :(得分:9)
不需要正则表达式,您可以使用Ctype
函数:
ctype_alnum
:检查字母数字字符ctype_alpha
:检查字母字符ctype_cntrl
:检查控制字符ctype_digit
:检查数字字符ctype_graph
:检查除空格ctype_lower
:检查小写字符ctype_print
:检查可打印的字符ctype_punct
:检查任何不是空格或字母数字字符的可打印字符ctype_space
:检查空格字符ctype_upper
:检查大写字符ctype_xdigit
:检查代表十六进制数字的字符在您的情况下使用ctype_alnum
,例如:
if (ctype_alnum($str)) {
//...
}
示例:
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo 'The string ', $testcase, ' consists of all letters or digits.';
} else {
echo 'The string ', $testcase, ' don\'t consists of all letters or digits.';
}
}
答案 3 :(得分:1)
这两个正则表达式都应该这样做:
$str = preg_replace('~[^a-z0-9]+~i', '', $str);
或者:
$str = preg_replace('~[^a-zA-Z0-9]+~', '', $str);
答案 4 :(得分:-1)
实现这一目标的最佳和最灵活的方法是使用正则表达式。 但我不知道如何在PHP中这样做,但本文可以提供帮助。 link
答案 5 :(得分:-1)
快捷方式如下:
if (preg_match('/^[\w\.]+$/', $str)) {
echo 'Str is valid and allowed';
} else
echo 'Str is invalid';
这里:
// string only contain the a to z , A to Z, 0 to 9 and _ (underscore)
\w - matches [a-zA-Z0-9_]+
希望它有所帮助!