从URL中提取特定部分

时间:2017-06-14 08:14:47

标签: php url

我必须提取网址的特定部分。

实施例

原始网址

http://www.example.com/PARTiNEED/some/other/stuff
http://www.example.com/PARTiNEED

在案例1中我需要提取

/PARTiNEED/

在案例2中,我需要提取相同的部分,但最后添加一个“/”

/PARTiNEED/

我现在得到的是这个

$tempURL = 'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$tempURL = explode('/', $tempURL);
$tempURL = "/" . $tempURL[3] . "/";

有更方便的方法吗?或者这个解决方案是否合适?

5 个答案:

答案 0 :(得分:3)

在可能的情况下,使用PHP的内置函数通常是个好主意。在这种情况下,parse_url方法用于解析URL。

在你的情况下:

// Extract the path from the URL
$path = parse_url($url, PHP_URL_PATH);

// Separate by forward slashes
$parts = explode('/', $path);

// The part you want is index 1 - the first is an empty string
$result = "/{$parts[1]}/";

答案 1 :(得分:1)

你不需要这个部分:

'http://'. $_SERVER['SERVER_NAME']

你可以这样做:

$tempURL = explode('/', $_SERVER['REQUEST_URI']);
$tempURL = "/" . $tempURL[1] . "/";

评论时编辑的索引从0到1。

答案 2 :(得分:1)

也许正则表达式更适合您的需求?

$tempURL = "http://www.example.com/PARTiNEED/some/other/stuff"; // or $tempURL = "http://www.example.com/PARTiNEED
$pattern = '#(?<=\.com)(.+?)(?=/|$)#';

preg_match($pattern, $tempURL, $match);

$result = $match[0] . "/";

答案 3 :(得分:1)

这可以让您正确了解您的要求。

<?php
    $url_array = parse_url("http://www.example.com/PARTiNEED/some/other/stuff");
    $path = $url_array['path'];
    var_dump($path);
?>

现在您可以使用字符串爆炸功能来完成工作。

答案 4 :(得分:1)

这里应该解决你的问题

// check if the var $_SERVER['REQUEST_URI'] is set
if(isset($_SERVER['REQUEST_URI'])) {
  // explode by /
  $tempURL = explode('/', $_SERVER['REQUEST_URI']);
  // what you need in in the array $tempURL;
  $WhatUNeed = $tempURL[1];
} else {
  $WhatUNeed = '/';
}

不要担心可以在代码中随时添加的尾部斜杠。

$WhatUNeed = $tempURL[1].'/';