【问题标题】:check for special characters in user name and numbers and special characters in first name, and last name form entry检查用户名和数字中的特殊字符以及名字和姓氏表单条目中的特殊字符
【发布时间】:2011-07-28 02:40:46
【问题描述】:

我正在练习一个简单的注册脚本,我想知道如何检查特殊字符和数字。基本上,对于用户名区域,不允许使用特殊字符。对于 first name , last name 区域,不允许使用特殊字符和数字。这会是一个正则表达式操作吗?

【问题讨论】:

  • 查找非特殊字符更容易、更可靠。

标签: php regex


【解决方案1】:

当我从我喜欢使用 ctype 函数的表单向 php 发布信息时,它们的用途是什么。 http://php.net/manual/en/book.ctype.php

所以如果你想 a-zA-Z 你可​​以

if( !ctype_alpha( $str ) )
   die( 'Invalid characters' );

或者,如果您想要 a-zA-Z0-9,您可以

if( !ctype_alnum( $str ) )
   die( 'Invalid characters' );

【讨论】:

  • 谢谢!这很有帮助:)
【解决方案2】:
$stringWithout = preg_replace('/[^a-zA-Z]/', '', $string);
$stringWith = $string;
if ($stringWith == $stringWithout) {
    //string is clean
}

也许是这样的? 如果你将除了 a-z 和 A-Z 之外的每个字符都替换为空,然后比较它们,如果它们相同,你就会知道他们在 has 中输入的只是 a-z 和 A-Z 之类的字符。

是的,这使用正则表达式来替换字符。

【讨论】:

    【解决方案3】:

    不要试图拒绝你不想要的东西——你以后总会发现用户比你更有想象力。

    只接受你知道你可以处理的事情。如果您只想要拉丁字母和空格,请确认这是您得到的唯一内容,例如:

    /^[0-9a-zA-Z ]+$/
    

    如果我错过了一些,请只添加您信任的角色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多