【发布时间】:2011-07-28 02:40:46
【问题描述】:
我正在练习一个简单的注册脚本,我想知道如何检查特殊字符和数字。基本上,对于用户名区域,不允许使用特殊字符。对于 first name , last name 区域,不允许使用特殊字符和数字。这会是一个正则表达式操作吗?
【问题讨论】:
-
查找非特殊字符更容易、更可靠。
我正在练习一个简单的注册脚本,我想知道如何检查特殊字符和数字。基本上,对于用户名区域,不允许使用特殊字符。对于 first name , last name 区域,不允许使用特殊字符和数字。这会是一个正则表达式操作吗?
【问题讨论】:
当我从我喜欢使用 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' );
【讨论】:
$stringWithout = preg_replace('/[^a-zA-Z]/', '', $string);
$stringWith = $string;
if ($stringWith == $stringWithout) {
//string is clean
}
也许是这样的? 如果你将除了 a-z 和 A-Z 之外的每个字符都替换为空,然后比较它们,如果它们相同,你就会知道他们在 has 中输入的只是 a-z 和 A-Z 之类的字符。
是的,这使用正则表达式来替换字符。
【讨论】:
不要试图拒绝你不想要的东西——你以后总会发现用户比你更有想象力。
只接受你知道你可以处理的事情。如果您只想要拉丁字母和空格,请确认这是您得到的唯一内容,例如:
/^[0-9a-zA-Z ]+$/
如果我错过了一些,请只添加您信任的角色。
【讨论】: