我必须提取网址的特定部分。
实施例
原始网址
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] . "/";
有更方便的方法吗?或者这个解决方案是否合适?
答案 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].'/';