使用PHP仅允许字符串中的[a-z] [A-Z] [0-9]

时间:2010-05-24 11:05:40

标签: php regex

如何获得仅包含a到z,A到Z,0到9以及一些符号的字符串?

6 个答案:

答案 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,例如:

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.';

    }
}

在线示例:https://ideone.com/BYN2Gn

答案 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_]+

希望它有所帮助!