我是php编程的新手。我已经用
建立了一个mysql数据库id,
city,
county,
state,
zip fields
我的问题是我编写的搜索表单适用于城市和县的查询,但只接受查询中的5个数字中的4个。我研究过,发现什么都没有帮助。我认为这可能是preg_replace()
的问题,但在那里没有运气。
我尝试了不同的mysql查询语法,没有运气。
$allowed = "/([0-9]{5})([0-9]{4})/";
$searchquery = preg_replace($allowed, '', $_POST['searchquery']);
if($_POST['filter1'] == "Zip Code"){
$sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";
答案 0 :(得分:2)
如果您正在尝试处理zip + 4,看起来您在正则表达式中缺少短划线。你的代码也没有多大意义。您不是要替换用户放入的任何内容,而是试图找出他们放入的是否是有效的邮政编码?而不是替换字符串的preg_replace,请尝试使用preg_match,它可以让您知道它们是否放入了有效的邮政编码。
它应该是这样的:
$allowed = "([0-9]{5})-([0-9]{4})";
if($_POST['filter1'] == "Zip Code"){
if(preg_match($allowed, $_POST['searchquery']))
{
$sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";
}
}
答案 1 :(得分:0)
看看
$string="tampa, florida, 33616-1701";
preg_match("/([0-9]{5})-([0-9]{4})/",$string,$matches);
var_dump( $matches);
或
$allowed = "/([0-9]{5})-([0-9]{4})/";
preg_replace($allowed, $_POST['searchquery'],$matches);
$searchquery=$matches[0];
if($_POST['filter1'] == "Zip Code"){
$sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";