【问题标题】:PHP GET parameters - Make parameters with and without space mean samePHP GET 参数 - 使带和不带空格的参数含义相同
【发布时间】:2017-11-22 02:37:18
【问题描述】:

首先,对不起,如果我的标题不太准确。

如果可以,如何使参数“city=Los%20Angeles”和“city=LosAngeles”相同?我有按城市搜索的广告网站,问题是某些广告的城市变量包含空格(%20),而有些则没有。这在搜索广告时会出现问题,因为搜索 Los Angeles 不会显示带有城市 LosAngeles 的广告。

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

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

【问题讨论】:

  • 发布您的搜索查询...

标签: php url-parameters


【解决方案1】:

好的,我按照Dom C 说的做了,它正在工作,但我不知何故忘记发布它。

谢谢大家的回答。

【讨论】:

    【解决方案2】:

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

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

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

    如果您知道只处理字母就可以了,并且不区分大小写也可以,那么也许您可以执行以下操作:

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

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

    【讨论】:

      【解决方案3】:
      1. 将您的 $_GET 值放入参数中
      2. 使用 urldecode (http://php.net/manual/en/function.urldecode.php) 转换 URL 编码
      3. 使用 str_replace http://php.net/manual/en/function.str-replace.php) 删除空格 $val = str_replace(" ", "", $yourVariable)

        $city = urldecode($_GET["city"]);

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          如果我从你的描述中理解的是真的,你想从传递的参数中删除空格字符。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-02-05
            • 1970-01-01
            • 2014-10-24
            • 1970-01-01
            • 1970-01-01
            • 2018-08-07
            • 1970-01-01
            相关资源
            最近更新 更多