首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP代码、郊区名称和邮政编码一起进行搜索?

如何使用PHP代码、郊区名称和邮政编码一起进行搜索?
EN

Stack Overflow用户
提问于 2016-11-28 10:47:45
回答 2查看 119关注 0票数 1

谁能告诉我,我要一起搜索郊区的名字和邮政编码。我的PHP代码只能在下面的组合中工作。(更详细的郊区名称:玫瑰湾,邮编2029)可以搜索

  • rosebay2029
  • 2029罗塞湾

找不到

  • 玫瑰bay2029
  • 罗塞湾2029
  • 玫瑰湾2029
  • 玫瑰湾2029年
  • 2029年玫瑰湾
  • 2029年玫瑰湾
  • 2029玫瑰湾

请告诉我如何改进我的PHP代码全组合(9)搜索。

代码语言:javascript
复制
$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>";

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-28 11:13:28

此函数将删除所有非alpha-数字字符,并以字符串形式查找郊区和邮政代码:

代码语言:javascript
复制
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 );
}

您可以通过以下方法查看测试结果:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2016-11-28 10:56:55

如果您可以搜索前两个示例,那么对于任何输入,只需删除空格即可。

代码语言:javascript
复制
$string = preg_replace('/\s+/', '', $string);

和小写输入

代码语言:javascript
复制
$string = strtolower($string);

它也能处理其他边缘案件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40842418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档