【问题标题】:How to take a string after the slash?如何在斜线后取一个字符串?
【发布时间】:2011-08-27 13:40:24
【问题描述】:

喜欢:

“http://www.blog-name.com/search/taio cruz”
----------------------------------------------^
"抱歉,没有找到与 标签 taio cruz"

问题:

如果用户输入http://www.blog-name.com/search/taio cruz,浏览器会寻找一个名为“taio cruz”的文件夹,不是吗?

如何获得“Taio Cruz”的价值?

【问题讨论】:

标签: php string url var


【解决方案1】:
echo basename("http://www.blog-name.com/search/taio cruz"); //taio cruz

【讨论】:

    【解决方案2】:
    $url = 'http://www.blog-name.com/search/taio cruz';
    $val = end(explode('/', $url));
    // $val is now 'taio cruz'
    

    【讨论】:

    • 这有一个明显的缺点,就是必须找到所有的斜线并为一个简单的问题创建一个中间数组。
    • @Emil 这是一个干净的解决方案。性能并不会真正受到那么大的影响,而且一开始也没那么重要
    • 不,这不是一个干净的解决方案。我同意性能损失可能很小,但是根据我的定义,创建一个中间数组(包括在内存中分配空间、构建哈希桶等等)并不干净。
    • @Emil 这是一个干净的解决方案,因为它可读且易于理解。使用strrpos(虽然方便而且可能更有效)很难理解,因为该函数的名称很糟糕。你太担心内部了,关键是要利用抽象来发挥你的优势。
    • 每个人都知道 strpos 和朋友做什么(或者应该,至少,如果他们以编写 PHP 代码为生的话)。按照您的逻辑,您的代码也可以在 endexplosion 中使用。我认为它很懒,尤其是因为编写它们的复杂性几乎相同。
    【解决方案3】:
    $url = 'http://www.blog-name.com/search/taio cruz';
    $last = substr($url, strrpos($url, '/') + 1);
    //$last is now "taio cruz"
    

    【讨论】:

    • 如果你输入blog-name.com/search/taiocruz 浏览器会寻找名为“Taio Cruz”的文件夹,不是吗?
    • 如果您想为当前页面执行此操作,可以将$url 替换为$_SERVER['REQUEST_URI']。我只是展示了一个通用的方法。
    • @Bernaz 您必须将此方法与 modrewrite 结合使用,以通过可能与请求的 URL 不匹配的 PHP 文件路由请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2015-07-29
    • 2020-10-13
    • 2021-09-18
    相关资源
    最近更新 更多