如何检查一个php字符串是不是只包含英文字母和数字?
Posted
技术标签:
【中文标题】如何检查一个php字符串是不是只包含英文字母和数字?【英文标题】:How to check, if a php string contains only english letters and digits?如何检查一个php字符串是否只包含英文字母和数字? 【发布时间】:2012-03-10 05:07:48 【问题描述】:在 JS 中我使用了这段代码:
if(string.match(/[^A-Za-z0-9]+/))
但我不知道,如何在 php 中做到这一点。
【问题讨论】:
【参考方案1】:以下代码将处理特殊字符和空格
$string = 'hi, how are you ?';
if (!preg_match('/[^A-Za-z0-9 #$%^&*()+=\-\[\]\';,.\/|":<>?~\\\\]+/', $string)) // '/[^a-z\d]/i' should also work.
echo 'english';
else
echo 'non-english';
【讨论】:
【参考方案2】:if(preg_match('/^[A-Za-z0-9]+$/i', $string)) // '/^[A-Z-a-z\d]+$/i' should work also
// $string constains both string and integer
胡萝卜放错了位置,所以它会搜索除方括号内的内容之外的所有内容。当胡萝卜在外面时,它会搜索方括号中的内容。
【讨论】:
【参考方案3】:if (preg_match('/^[\w\s?]+$/si', $string))
// input text is just English or Numeric or space
【讨论】:
这取决于语言环境。对我来说(法语,语言环境 fr_fr)\w
匹配所有带有变音符号的字符,例如 éèçàÀ...
【参考方案4】:
PHP 可以像这样使用preg_match(regex, string)
将字符串与正则表达式进行比较:
if (!preg_match('/[^A-Za-z0-9]+/', $string))
// $string contains only English letters and digits
【讨论】:
【参考方案5】:看看这个快捷方式
if(!preg_match('/[^\W_ ] /',$string))
class [^\W_]
匹配任何字母或数字,但不匹配下划线。并注意!
符号。它将使您免于扫描整个用户输入。
【讨论】:
【参考方案6】:如果你需要检查它是否是英文的。您可以使用以下功能。可能会帮助某人..
function is_english($str)
if (strlen($str) != strlen(utf8_decode($str)))
return false;
else
return true;
【讨论】:
【参考方案7】:使用preg_match()。
if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work.
// string contains only english letters & digits
【讨论】:
是的。它看起来更有效率。寻找第一个非范围内的字符似乎比扫描整个字符串更明智。 N.B 英文版的上述链接在这里:php.net/manual/en/function.preg-match.php 我刚试过这个和使用!运算符给出错误的结果。如果字符串不只包含英文字母和数字,if语句中的代码将被执行。 例如,如果我给出字符串“\”,则 if 语句中的代码将执行。但是您在 if 语句中的注释 // 字符串仅包含英文字母和数字表明您希望 if 语句中的代码仅在字符串包含 a-z A-Z 或 0-9 时执行,但是使用 !你的代码正好相反。 @chap 你看到正则表达式开头的 ^ 字符了吗?这意味着一旦找到“无效”字符,preg_match() 就会返回 true。如果没有 !,将对任何“无效”字符串执行 if 块。不过,我会尽快重新测试整个过程,并随时通知您。【参考方案8】:if(ctype_alnum($string))
echo "String contains only letters and numbers.";
else
echo "String doesn't contain only letters and numbers.";
【讨论】:
不知道为什么人们不投票 ctype 函数。我无法想象 ctype 函数的范围存在性能问题。 ctype_alnum 取决于语言环境,因此它可能无法如您所愿!【参考方案9】:if(preg_match('/[^A-Za-z0-9]+/', $str))
// ...
【讨论】:
【参考方案10】:例如,您可以使用preg_match() 函数。
if (preg_match('/[^A-Za-z0-9]+/', $str))
// ok...
【讨论】:
以上是关于如何检查一个php字符串是不是只包含英文字母和数字?的主要内容,如果未能解决你的问题,请参考以下文章