从完整 URL 中提取第一个 URL 段
Posted
技术标签:
【中文标题】从完整 URL 中提取第一个 URL 段【英文标题】:Extract first URL Segment from full URL 【发布时间】:2012-08-17 04:36:41 【问题描述】:如何从完整的 URL 中提取第一个 URL 段?应清理第一个 URL 段以将 -
替换为空格 。
完整网址
http://www.domain.com/River-Island/River-Island-T-Shirt-with-Triangle-Girl-Print/Prod/pgeproduct.aspx?iid=2516020
所需的输出
River Island
【问题讨论】:
What have you tried? 我试过str_replace()
用空格替换-
。不幸的是,我无法弄清楚提取第一个 URL 段的正则表达式部分。
【参考方案1】:
你可以使用:
$url = 'http://www.domain.com/River-Island/River-Island-T-Shirt-with-Triangle-Girl-Print/Prod/pgeproduct.aspx?iid=2516020';
$parsed = parse_url($url);
$path = $parsed['path'];
$path_parts = explode('/', $path);
$desired_output = $path_parts[1]; // 1, because the string begins with slash (/)
【讨论】:
+1 用于使用parse_url
,虽然我会使用parse_url($url, php_URL_PATH)
。
我用过$desired_output = $path_parts[1];
,效果很好。
你也可以这样做 //explode("/",trim($path, "/"));去除噪音,使用reset获取第一个元素 //$output=reset($path_parts);【参考方案2】:
$page = explode('/', substr($_SERVER['REQUEST_URI'], 1), 2);
echo str_replace("-"," ", $page[0]);
【讨论】:
【参考方案3】:试试这个:/http:\/\/[^\/]+\/([^\/]+)/i
请看这里:http://regex101.com/r/lB9jN7
【讨论】:
稍作修改以排除第一段并在 nginx conf 中获取其他所有内容,例如^\/[^\/]+\/(.*)
。这有助于使用独立的子目录控制器构建对 seo 友好的 url。竖起大拇指!【参考方案4】:
$path = parse_url($url, PHP_URL_PATH);
$first = substr($path, 0, strpos($path, '/'));
查看这三个函数的文档。也许你必须从路径的开头去掉一个斜线,我不确定。
【讨论】:
【参考方案5】:你有没有使用 CodeIgniter ...???那么它可能是
$this->uri->segment(segment number of url);
以及它需要在Controller中加载uri库
【讨论】:
以上是关于从完整 URL 中提取第一个 URL 段的主要内容,如果未能解决你的问题,请参考以下文章