Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 - Fatal编程技术网

Php 无法根据需要计算表达式匹配

Php 无法根据需要计算表达式匹配,php,regex,Php,Regex,我需要用PHP实现一个代码,在数据库中为给定的$stateID添加一个新城市(传入$\u POST['city'])名称,如果它不存在并返回生成的CityID,否则使用传入的CityID$\u POST['city']。代码如下: $stateID = substr(filter_input(INPUT_POST, 'State'), 0, 2); $city = filter_input(INPUT_POST, 'City', FILTER_VALIDATE_INT); $cityID = N

我需要用PHP实现一个代码,在数据库中为给定的
$stateID
添加一个新城市(传入
$\u POST['city']
)名称,如果它不存在并返回生成的CityID,否则使用传入的CityID
$\u POST['city']
。代码如下:

$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,代码都会回显city Exists

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

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

正则表达式匹配小写或大写字符,如果模式匹配给定主题,则返回1;如果不匹配,则返回0;如果发生错误,则返回FALSE

过滤器\u验证\u INT一起使用

如果输入
ABC
$city
的值将为false,
preg_match(“/[a-zA-Z]/”,false)
将返回0。if语句将检查
if(!0)
是否为真,您将看到
城市存在

如果输入
123
$city
的值将为
123
preg_match(“/[a-zA-Z]/”,123)
将返回0。if语句将检查
if(!0)
是否为真,您将看到
城市存在