PHP GET参数 - 使有和没有空格的参数意味着相同

时间:2017-06-19 18:58:58

标签: php url-parameters

首先,对不起,如果我的标题不是那么精确的话。

是否有可能,如果是,如何制作参数" city=Los%20Angeles"和" city=LosAngeles"相同?我有一个按城市搜索的广告网站,问题是某些广告的城市变量包含空格(%20),有些则不包含。搜索广告时出现问题,因为搜索洛杉矶不会显示包含城市LosAngeles的广告。

因此,第一个网址需要显示来自第一个和第二个网址的广告 第一个网址https://www.mywebsite.com/city-Los%20Angeles/listings.html 第二个网址https://www.mywebsite.com/city-LosAngeles/listings.html

如果有帮助,我使用smarty模板引擎。

5 个答案:

答案 0 :(得分:0)

如果我从您的描述中理解的是真的,您希望从传递的参数中删除空白字符。

如果是这样,这可能对您有用

$param_city = str_replace("%20", "", $_POST['city']);

答案 1 :(得分:0)

如果您想在PHP中查看它,请执行以下操作: $str = $_GET['city']; echo $str . " "; echo trim($str,"Hed!"); 这将允许您在PHP中以相同的方式阅读它。

或者您可以在HTACCESS文件中执行此操作。

答案 2 :(得分:0)

  1. 将$ _GET值放入参数
  2. 使用urldecode(http://php.net/manual/en/function.urldecode.php)转换网址编码
  3. 使用str_replace http://php.net/manual/en/function.str-replace.php)删除空格$ val = str_replace("","",$ yourVariable)

    $ city = urldecode($ _ GET [" city"]);

    $ city = str_replace("","",$ city);

答案 3 :(得分:0)

最好的方法是在收到变量后对变量进行标准化。无论如何,这是一个很好的做法,因为您希望在过滤过程中删除任何潜在危险的字符。

所以,虽然这是一个不错的选择:

$city = str_replace('%20', '', $city);

如果你知道只处理信件会很好,而且不区分大小写很好,那么也许你可以这样做:

$city = preg_replace('/[^a-z]/', '', strtolower($city));

此后一个选项还可以防止代码的其他部分可能无法正常处理的任何恶意字符。此外,假设拼写是正确的,那应该意味着每个城市都会有一个可能的字符串。

答案 4 :(得分:0)

好的,我按照Dom C说的那样做了,并且它正在工作,但我不知道发布了它。

谢谢大家的回答。