【问题标题】:Convert given URL to a base URL将给定的 URL 转换为基本 URL
【发布时间】:2012-08-23 18:56:48
【问题描述】:

如何将给定的 url 转换为基本 url? 这意味着如果我有“http://test.com/folder/it.html?gsa=5”,脚本应该返回“http://test.com/folder/”。

我试过了:

preg_match('~.*/~', $cur_url, $match);
$base=($match[0]=='http://') ? $cur_url : $match;

效果不好。

【问题讨论】:

  • 实际上,基本 URL 是 http://test.com/。不管怎样,what have you tried?
  • 你想去掉最后一个 / 字符吗? substr?
  • 我试过这段代码,但它似乎不能正常工作。 preg_match('~.*/~', $cur_url, $match); $base=($match[0]=='http://') ? $cur_url : $匹配; @Matt,不,基础是带有路径的 url,但删除了文件、查询和片段。
  • @user1568625 我想你不明白 base URL 是什么意思。
  • 一个不可靠的简单方法是dirname()。仅当 URL 参数不包含斜杠时才有效,并且还会删除“目录”/

标签: php url base


【解决方案1】:

试试parse_url

来自 php.net 的示例

<?php $url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH); ?>

返回

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path

【讨论】:

  • PATH 也将文件保存在最后。我必须被移除。我还需要生成一个基本 url,而不仅仅是路径。
  • 重组基本 URL 需要做很多工作。问题看起来像 OP 只想要 it.html 修剪,并保留资源定位器的基本“路径”。
  • 没错。但是[path] 将需要进一步的字符串修补。您的 parse_url 示例将返回 /folder/it.html
【解决方案2】:

使用正则表达式字符串来保存 .com 的所有内容。只需设置它,以便可以使用任何可能的站点结尾。将很快更新示例字符串。

--编辑--

此 php 正则表达式字符串可用于从任何 url(经过测试)获取基地址。

![a-zA-Z]+(.com/|.ca/|.gov/)!

注意:此字符串设置为仅适用于 .com、.ca 和 .gov 域,但您可以在括号中添加其他字符串,用 | 分隔它们。

--编辑--

重读您的帖子,如果您想要 url 中的所有内容,除了末尾的文件,我已经设计了另一个字符串。

!([a-zA-Z]*+(.com/|.ca/|.gov/))+([a-zA-Z/]*[/])!

注意:如果你将这个与最后没有文件的 url 一起使用,则目录必须仍然有斜杠,否则最后一个目录也会被剪切。

【讨论】:

    【解决方案3】:

    如果你想从 url 中删除 $_GET 变量

    ?hello=somethin&amp;something=somethingelse

    以下方法可能有效:

    $fullurl = $_SERVER['REQUEST_URI'];
    $urlarray = explode($fullurl, "?");
    $urlnoget = $urlarray[0];
    

    这会将 url 分解成每个 ?没有?在实际的文件/fooledr 名称中,因此它将清除 $_GET url。

    你考虑过使用 JavaScript 吗?

    对不起,如果有更简单的方法,但这是我所知道的。

    【讨论】:

    • 我从来没有听说过这样的功能,我是新来的。 PS:如果我的帖子有用的话+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多