通过AJAX向PHP传递特殊字符
我正在收集表单数据,通过AJAX调用将其发送到PHP验证脚本。问题在于php验证脚本的特殊字符没有按预期工作 HTML: PHP验证 PHP过滤器 在空字符串上,它将错误打印到屏幕上。但是如果我做一些像~!@$%^&*,然后它接受字符串为good,不抛出和出错,即使preg_match的结果==false通过AJAX向PHP传递特殊字符,php,ajax,regex,validation,Php,Ajax,Regex,Validation,我正在收集表单数据,通过AJAX调用将其发送到PHP验证脚本。问题在于php验证脚本的特殊字符没有按预期工作 HTML: PHP验证 PHP过滤器 在空字符串上,它将错误打印到屏幕上。但是如果我做一些像~!@$%^&*,然后它接受字符串为good,不抛出和出错,即使preg_match的结果==false $string = trim($string); if ($string == null || $string == "") { return false; } else {
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.,\-_'\"@?!:;\$#&\+=\sa-zA-Z0-9\(\)]/", $string) == true) {
return false;
} else {
return true;
}
}
这是更有效的正则表达式,但不是您想要的结果:您正在检查几乎所有的输入,因此它将匹配abcd并返回false。正则表达式有11个具有特殊含义的字符,只有这些字符和需要转义的字符:^$[]|.*+-请尝试以下操作:-
<?php
$string = "tes$%tname"; // invalid string
//$string = "testname"; // valid string
if(test($string) == false)
{
echo "String is invalid";
}
function test($string){
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.,\-_'\"@?!:;\$#&\+=\sa-zA-Z0-9\(\)]/",$string) == true) {
return false;
} else {
return true;
}
}
}
?>
PHPFiddle在这里:-:如果模式与给定主题匹配,preg_match返回1,如果不匹配,则返回0,如果发生错误,则返回FALSE。你试过比较吗!=0?@davidkonrad:很高兴知道,但仍然不是预期的结果。我确信validateString返回false,但是如果条件不是AcceptSign它…从pregmatch的文档中,此函数可能返回Boolean false,但也可能返回计算结果为false的非Boolean值。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值。尝试使用===而不是==@Atul:也不起作用。我加入了validateString,摆脱了preg_match,结果返回false。然而,对于PHP验证脚本,它并没有触发IF条件。但是如果返回空的和空字符串的假工程,那么它也应该对这一点很有效。我试着用另一个preg_match来回答这个问题
$postData = $_POST;
if (Filter::validateString($postData['firstName']) == false) {
echo "Oops! Some characters used in your first name are not valid.";
}
//Returns true if string is good, false otherwise
public static function validateString($string) {
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.\,\-\_\'\"\@\?\!\:\;\$\#\%\&\+\= a-zA-Z0-9()]/", $string) == true) {
return false;
} else {
return true;
}
}
}
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.,\-_'\"@?!:;\$#&\+=\sa-zA-Z0-9\(\)]/", $string) == true) {
return false;
} else {
return true;
}
}
<?php
$string = "tes$%tname"; // invalid string
//$string = "testname"; // valid string
if(test($string) == false)
{
echo "String is invalid";
}
function test($string){
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.,\-_'\"@?!:;\$#&\+=\sa-zA-Z0-9\(\)]/",$string) == true) {
return false;
} else {
return true;
}
}
}
?>