PHP-预匹配混淆-不检查字符集是否正确-需要空格
我目前正在构建一个应用程序,其中将包含地址,并且我正在使用preg_match进行一些字符检测,如果用户使用无效字符以确保安全,则会以用户的方式抛出一个错误 我的问题是使用preg_match,它似乎表现得很奇怪,我不认为我使用它是否正确,因为它的行为方式 我下面的代码应该允许字母A到Z,包括城市、县和国家的大写和小写字母。以下代码是更新该字段时的城市示例:PHP-预匹配混淆-不检查字符集是否正确-需要空格,php,preg-match,Php,Preg Match,我目前正在构建一个应用程序,其中将包含地址,并且我正在使用preg_match进行一些字符检测,如果用户使用无效字符以确保安全,则会以用户的方式抛出一个错误 我的问题是使用preg_match,它似乎表现得很奇怪,我不认为我使用它是否正确,因为它的行为方式 我下面的代码应该允许字母A到Z,包括城市、县和国家的大写和小写字母。以下代码是更新该字段时的城市示例: // The user wants to update the city so let's go through the update p
// The user wants to update the city so let's go through the update process
if ( isset($_POST['city']) ) {
// Check that the city is different before we try to update it
if ( $newcompanycity != $companycity ) {
// Check that the city is less than 50 characters and contains valid characters
if ( (strlen($newcompanycity) <= 50) && (preg_match('/[^A-Za-z]/', $newcompanycity)) ) {
// The city is fine so let's update it
$update_success = true;
mysqli_query($sql, "UPDATE clients SET city = '$newcompanycity' WHERE companyid = '$companyid'") or die(mysqli_error($sql));
} else {
// The city doesn't meet the requirements to be update so return an error
$update_fail = true;
$city_error = true;
}
}
}
//用户想要更新城市,所以让我们来完成更新过程
如果(isset($_POST['city'])){
//在尝试更新之前,请检查城市是否不同
如果($newcompanycity!=$companycity){
//检查城市是否少于50个字符并且包含有效字符
if((strlen($newcompanycity)有时regexp只会使事情更加复杂。PHP有一个名为ctype_alpha()
的强大函数,它将检查变量是否只有a-Za-z
(ctype_alpha($newcompanycity))
这里有一个你的正则表达式是/[^a-Za-z]/
,意思是“不是a-z和a-z的一切”。
函数返回匹配数,因此如果未找到无效字符,则应返回0
因此,如果您将(preg_match('/[^A-Za-z]/',$newcompanycity))
更改为(preg_match('/[^A-Za-z]/',$newcompanycity)==0)
,它应该可以正常工作,因为如果没有找到无效字符,它将变为true
要包含空格,只需将它们添加到您的正则表达式中即可:/[^A-Za-z]/
谢谢!我不知道它的存在,非常有用。我将使用它。这允许空格(空格)吗如果使用了空格,会不会返回一个错误?谢谢你的帮助,使用三个等号修复了它。我已经为此奋斗了很久,谢谢,终于成功了!