php,如果id恰好是x

时间:2016-09-11 00:11:43

标签: php strpos

我使用以下内容检查网址中的动态城市ID,如下所示:

 http://website.com/homes-for-sale-results/?cityId=10008&propertyType=SFR%2CCND&minListPrice=&ma

我正在使用的PHP是:

if (strpos($url, "cityId=9918"))  {
$cityName = "Allenhurst";} 
} elseif (strpos($url, "cityId=1000")) {
$cityName = "Highlands";
} elseif (strpos($url, "cityId=10009")) {
$cityName = "Holmdel";

除了cityid包含另一个城市的id之外,这是有效的,因为一个有4位数,另外5位数。在上面的例子中:Highlands =" 1000"和" Holmdel =" 10009"。

如何查询确切的cityid?

1 个答案:

答案 0 :(得分:3)

是的,strpos不是一个很好的解决方案。

您可以先将问题分解为几个较小的部分,以便更轻松。

由于它是一个URL,您可以先使用parse_url()以确定的方式从URL中提取查询字符串。然后,您将能够使用parse_str()之类的内容将该查询字符串的各个部分解析为单个数据点。因此,您可以直接将数字与特定值进行比较。

$url = "http://website.com/homes-for-sale-results/?cityId=10008&propertyType=SFR%2CCND&minListPrice=&ma";

$query = parse_url($url, PHP_URL_QUERY);

parse_str($query, $data);
$cityId = $data["cityId"];

if ($cityId == 9918) {
    $cityName = "Allenhurst";
} elseif ($cityId == 1000) {
    $cityName = "Highlands";
} elseif ($cityId == 10009) {
    $cityName = "Holmdel";
}

因此,在第一步$query为我们提供了URL中的确切查询字符串(?之后的所有内容)。然后$data在查询字符串中为每个名称/值对提供一个数组。这意味着最后,您可以通过cityId(我刚刚在此分配给$data["cityId"])从查询字符串中获取$cityId的确切值,并将其用于直接比较。