Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 预匹配包括正斜杠_Php_Regex_Preg Match - Fatal编程技术网

Php 预匹配包括正斜杠

Php 预匹配包括正斜杠,php,regex,preg-match,Php,Regex,Preg Match,这是我的功能,用于检查输入的安全问题和/或答案是否包含恶意字符: function validate_input($field) { $ErrorMessage = ""; $field = preg_replace("/[\s]+is/", '', $field); if(preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field ) ===0) { $ErrorMessage .= "<div class='erro

这是我的功能,用于检查输入的安全问题和/或答案是否包含恶意字符:

function validate_input($field) {
    $ErrorMessage = ""; 
    $field = preg_replace("/[\s]+is/", '', $field);
    if(preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field ) ===0) {
        $ErrorMessage .= "<div class='error_message'>Potentially malicious characters found in:<i> " . $field . ",</i> please enter only alphanumeric characters</div/><br/>";
    } return $ErrorMessage;
}
函数验证\u输入($field){
$ErrorMessage=“”;
$field=preg_replace(“/[\s]+is/”,“”,$field);
如果(预匹配(“/^[A-Za-z0-9'?!-\s]+$/”,$字段)==0){
$ErrorMessage.=“在“.$field.”中发现潜在的恶意字符,请仅输入字母数字字符
”; }返回$ErrorMessage; }
当我为问题输入类似“What’s up?”的内容时,它会返回一个错误。当我在($field)上进行var_转储时,它返回为“What's up?”


那么,如何将正斜杠作为一个可接受的字符

您似乎拥有PHP active的“magic quote”功能,这不应该是出于安全原因:所有用户插入数据的转义都应该由您自己的代码完成

不管怎样,如果你想保持现状,就换掉你的

preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field)


之所以有四元组\是因为您需要对其进行转义,因为它位于用双引号分隔的字符串中,并且位于正则表达式中。

允许正斜杠和其他普通字符的示例

    $string = "J’s Bikes/IHOP";  // bad user input 
    if (!preg_match("/^[A-Za-z0-9!@#$%&()*;:_.'\/\\\\ ]+$/", $string)) {
       echo "Invalid $string";          
       }

您是否正在检查“恶意字符”以防止SQL注入?您应该停止使用
mysql.*
函数。他们被弃用了。改为使用(从PHP5.1开始支持)或(从PHP4.1开始支持)。如果您不确定使用哪一个。在这两种语言中使用准备好的语句时,它们将有助于防止sql注入,从而使上述代码变得不必要。
    $string = "J’s Bikes/IHOP";  // bad user input 
    if (!preg_match("/^[A-Za-z0-9!@#$%&()*;:_.'\/\\\\ ]+$/", $string)) {
       echo "Invalid $string";          
       }