谁能告诉我,我要一起搜索郊区的名字和邮政编码。我的PHP代码只能在下面的组合中工作。(更详细的郊区名称:玫瑰湾,邮编2029)可以搜索
找不到
请告诉我如何改进我的PHP代码全组合(9)搜索。
$serchkey = isset($_POST['search'])? $_POST['search'] : "0000 map";
$value=explode(" ",$serchkey);
$suburbsname= urlencode(str_replace("-","",$value[0]));
$postcode = preg_replace('/[^0-9]/', '', $suburbsname);
$suburbs = preg_replace('/[^a-zA-Z]/','', $suburbsname);
$result = mb_substr($suburbs, 0, 4); // I need to display suburbs name first 4 letters
$geturlcontent = "http://myurl/Data?pcode=".$postcode."&SuburbName=".$result;
echo $suburbsname."<br>";
echo $suburbs."<br>";
echo $postcode."<br>";
发布于 2016-11-28 11:13:28
此函数将删除所有非alpha-数字字符,并以字符串形式查找郊区和邮政代码:
function searchFunction($searchKey){
$searchKey = preg_replace('/[^a-zA-Z0-9]/i', '', $searchKey);
$suburbs = "";
$postCode = "";
$lastCharString = false;
$numericCount = 0;
for($i = 0; $i<strlen($searchKey); $i++){
$isNumeric = is_numeric($searchKey[$i]);
if($lastCharString && $isNumeric && $numericCount > 0){
return false; // Mixed search string like ro0sebay20
}
if(!$isNumeric){
$suburbs.=$searchKey[$i];
$lastCharString = true;
}else{
$numericCount++;
$lastCharString = false;
$postCode.=$searchKey[$i];
}
}
return array( 'suburbs' => $suburbs, 'postCode' => $postCode );
}您可以通过以下方法查看测试结果:
var_dump(searchFunction("rose bay2029")); // suburbs = rosebay, postCode = 2029
var_dump(searchFunction("000-0 map")); // suburbs = map , postCode = 0000
var_dump(searchFunction("0000 ma2p")); // false发布于 2016-11-28 10:56:55
如果您可以搜索前两个示例,那么对于任何输入,只需删除空格即可。
$string = preg_replace('/\s+/', '', $string);和小写输入
$string = strtolower($string);它也能处理其他边缘案件。
https://stackoverflow.com/questions/40842418
复制相似问题