无法根据需要评估表达式匹配

时间:2018-07-20 03:24:37

标签: php regex

我需要在PHP中实现一个代码,该代码为给定的$_POST['City']添加一个新的城市名称(在$stateID中传递)(如果尚不存在)并返回生成的CityID,否则使用在$_POST['City']中传递的CityID。这是代码:

$stateID = substr(filter_input(INPUT_POST, 'State'), 0, 2);
$city = filter_input(INPUT_POST, 'City', FILTER_VALIDATE_INT);
$cityID = NULL;
if(!preg_match("/[a-zA-Z]/", $city)){
  $cityID = $city;
  echo 'City Exists';
}
else{
  # If a new city name is entered, store it in database
  $params = array('ss', $stateID, $city);
  $cityID = $dbh->ExecuteScalar("CALL AddNewCity(?, ?, @outCityID)", $params);
  echo 'New City Added';
}

问题是$city的值是 ABC 还是 123 ,该代码回显城市存在

请忽略代码$dbh->ExecuteScalar........。它正在使用我自定义的数据库处理库。

正则表达式语句有什么问题?

1 个答案:

答案 0 :(得分:0)

正则表达式[a-zA-Z]匹配小写或大写字符,如果模式匹配给定的主题,则preg_match返回1,如果不匹配则返回0,如果发生错误则返回FALSE。

您将filter_inputFILTER_VALIDATE_INT一起使用。

如果输入ABC,则$city的值为false,而preg_match("/[a-zA-Z]/", false)则返回0。if语句将检查if (!0)是否为true,您将将会看到City Exists

如果输入123,则$city的值将为123,而preg_match("/[a-zA-Z]/", 123)将返回0。if语句将检查if (!0),该值为true,您将看到City Exists