【问题标题】:Using PHP to Get URL String使用 PHP 获取 URL 字符串
【发布时间】:2012-11-24 22:44:54
【问题描述】:

这是我的网址:

http://www.mywebsite.com/local/cityname-free-services

我正在使用

$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper($check);
echo $check;

获取城市名称并将其大写。但是,当它回响时,我得到了这个:

CITYNAME-FREE-SERVICES

当我只想回声时:

CITYNAME

我需要在代码中进行哪些更改才能获取城市名称?

另外,一些城市名称中有破折号,我需要在回显时将它们替换为空格。为此需要添加什么?谢谢!

【问题讨论】:

    标签: php echo explode implode


    【解决方案1】:

    几种方法之一。这里有人可能会向您展示一些做得更好的正则表达式,但这会删除“免费服务”,并用空格替换破折号:

    $url = $_SERVER['REQUEST_URI'];
    $check = end(explode('/local/',$url));
    $check = strtoupper(str_ireplace("free-services", "", $check));
    echo str_replace("-", " ", $check);
    

    【讨论】:

      【解决方案2】:

      您想用- 再次分解生成的字符串并保留第一个元素,类似于

      $url = $_SERVER['REQUEST_URI'];
      $check = end(explode('/local/',$url));
      $check = current(explode('-', strtoupper($check)));
      echo $check;
      

      这样,如果最后一部分发生变化,您的CITYNAME 仍然有效。

      再解释一下,explode(文档here)会将字符串分解为数组元素,它会使用第一个参数将其分解,所以在这种情况下,传递-将创建一个包含3个元素的数组、CITYNAMEFREESERVICEScurrent(文档here)将获取数组中的当前位置并返回该值,默认情况下,当前位置在第一个元素上。您还可以索引数组中的单个元素,因此explode('-', strtoupper($check))[0] 也会给您CITYNAME,使用[1][2] 会给您FREESERVICES

      编辑:我没有看到关于城市名称的破折号部分。这使问题有点复杂,因为您的 URL 包含您想要摆脱的其他破折号。如果“-FREE-SERVICES”是constant,而这始终是您想要摆脱的部分,那么按照cale_b 的建议进行操作是个好主意,即将"free-services" 替换为""。所以我 +1 他的回答。

      编辑 2: 出于某种原因,我的答案被选中,对于带有 破折号 的名称,您将需要执行类似于 cal_b 建议的操作!

      【讨论】:

      • +1 用于使用current()。我选择了array_shift(array_values())
      • 他提到一些城市名称中有连字符。在那种情况下不会中断吗?
      【解决方案3】:
      $url = $_SERVER['REQUEST_URI'];
      $check = end(explode('/local/',$url));
      $check = strtoupper($check);
      $check = explode("-", $check);
      echo $check[0];
      

      【讨论】:

      • 他提到一些城市名称中有连字符。在那种情况下不会中断吗?
      【解决方案4】:
      $url = 'http://www.mywebsite.com/local/cityname-free-services';
      $check = end(explode('/local/',$url));
      $check = strtoupper($check);
      echo $check; // prints CITYNAME-FREE-SERVICES
      echo '<br>';
      $first_element = strtoupper(str_ireplace(array("-free-services","-"),array(""," "),$check));
      echo $first_element; // prints CITYNAME
      

      【讨论】:

      • 他提到一些城市名称中有连字符。在那种情况下不会中断吗?
      猜你喜欢
      • 2018-05-07
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2012-01-12
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多