如果我有一个看起来像这样的存储输入字符串
http://site.com/param1/value1
php如何提取value1
?
我知道如何提取看起来像这样的参数
http://site.com?param1=value1
但它不适合我要问的格式。
答案 0 :(得分:2)
一般情况下你可以用parse_url解析url,然后用/来爆炸路径,然后读取数组中的第二个值。
答案 1 :(得分:2)
您可以使用简单的字符串函数组合:
$str = "http://site.com/param1/value1";
$tail = substr($str, strrpos($str, "/") + 1);
或者,如果它不确定字符串中是否有/
:
preg_match("#/(\w+)$#", $string, $match);
$tail = $match[1];
对于微优化器:这也通常会更快,因为array-explode()解决方法。
答案 2 :(得分:1)
快速&易:
$url = "http://site.com/param1/value1";
$split_url = explode("/", $url);
$value = $split_url[3];
答案 3 :(得分:1)
$url = 'http://example.com/param1/value1';
list($param1, $value1) = array_slice(explode('/', $url), -2, 2);
这将为您提供存储在变量$ param1和$ value1中的示例中的param1和value1。
答案 4 :(得分:1)
查看一些php.net手册,您可以轻松找到这个功能,完全符合您的需求
答案 5 :(得分:0)
查找parse_URL,这是你想要的功能
答案 6 :(得分:0)
我建议将Trickers和Toby Allens解决方案结合使用
$path = parse_url($url, PHP_URL_PATH);
$segments = explode('/', trim($path, '/'));
$value = $segments[2];
如果你有多个key-value-paris,你可以确保trim()
,键始终是偶数,值总是奇数
$count = count($segments);
$result = array();
for ($i = 0; $i < $count; $i += 2) {
$result[$segments[$i]] = $segments[$i+1];
}