Preg_Replace在空值中给出错误

时间:2013-04-10 04:20:21

标签: php regex preg-replace

您好我想在检查用户输入时是否使用Preg_Replace函数是否输入任何值。如果没有给出错误消息,如'请输入你的名字',但我没有收到此错误:

  

注意:未定义的索引:C:\ xampp \ htdocs \ spdealers \ Admin中的buildingslabs       第24行的Panel \ Property_Insert_Page_exe.php

这是我的代码:

<?php
  $buildingslabs = preg_replace("[^A-Z a-z0-9]", "", $_POST['buildingslabs']);

  if(empty($buildingslabs)
  {
    echo 'Plese Enter the Buildings Labs';
  }
  else
  {
    echo 'successfully inserted';
  }
?>

5 个答案:

答案 0 :(得分:1)

在这里使用isset

if(isset($_POST['buildingslabs'])) {
    $buildingslabs = preg_replace("[^A-Z a-z0-9]", "", $_POST['buildingslabs']);

    if(empty($buildingslabs)
    {
        echo 'Plese Enter the Buildings Labs';
    }
    else
    {
        echo 'successfully inserted';
    }
}

答案 1 :(得分:0)

<?php
  if(!empty( $_POST['buildingslabs'])){
  $buildingslabs = preg_replace("[^A-Z a-z0-9]", "", $_POST['buildingslabs']);

  if(empty($buildingslabs)
  {
   echo 'Plese Enter the Buildings Labs';
  }
  else
  {
  echo 'successfully inserted';
  }
}
else{
echo 'Plese Enter the Buildings Labs';
}

答案 2 :(得分:0)

Notice: Undefined index: buildingslabs in C:\xampp\htdocs\spdealers\Admin        
Panel\Property_Insert_Page_exe.php on line 24

它表明您在$ _POST ['buildingslabs']中的索引不存在。请尝试检查您的输入文字名称。

答案 3 :(得分:0)

该错误不在preg_replace中。

使用

if(empty($_POST['buildingslubs'])) $_POST['buildingslubs'] = '';

在preg_replace开始之前

答案 4 :(得分:0)

通知不是来自preg_replace();相反,您尝试访问$_POST['buildinglabs']但未发布buildinglabs参数。

我会转换正则表达式并使用filter_input()

$labs = filter_input(INPUT_POST, 'buildingslabs', FILTER_VALIDATE_REGEXP, [
    'options' => ['regexp' => '/^[A-Z a-z0-9]+$/'],
    'flags' => FITLER_NULL_ON_FAILURE,
]);

if ($labs !== null) {
    // do something
}

如果未发布参数(可能是GET请求或POST中缺少某些内容),$labs将为null

如果没有,正则表达式会尝试验证整个字符串(从开始到结束),所有字符都在给定的字符集中。