【问题标题】:regex for extracting anchor in a url用于在 url 中提取锚点的正则表达式
【发布时间】:2010-06-24 11:12:48
【问题描述】:

我正在尝试使用 preg_replace 从 url 中提取锚标记及其后面的所有内容。我找到了一个可以删除 # 之后的所有内容,但我想要一个删除 # 及其后面的所有内容。

http://blah.com#removethis

谢谢, 史蒂夫

【问题讨论】:

  • 这里的正则表达式似乎有点矫枉过正。为什么不只是explode('#','http://blah.com#removethis',2)[0]
  • @kerkeslager 该代码在 PHP 中不起作用。

标签: php regex


【解决方案1】:

你可以试试parse_url函数:

$url = "http://blah.com#removethis";
print_r(parse_url($url));

片段 - 在井号 # 之后

输出:

Array
(
    [scheme] => http
    [host] => blah.com
    [fragment] => removethis
)

【讨论】:

    【解决方案2】:

    没有正则表达式的另一种方式:

    $newurl = substr($url, 0, strpos($url,"#")); 
    

    【讨论】:

    • @Russell Dias,这不是 OP 想要的吗?
    【解决方案3】:
    $url = preg_replace('/#.*$/', '', $url);
    

    【讨论】:

      【解决方案4】:
      $url = preg_replace('@#.*$@', '', $url);
      

      【讨论】:

        【解决方案5】:

        当有适当的库函数来完成这项工作时,不要使用正则表达式。

        【讨论】:

        • 虽然我完全同意这种观点,但这并不是真正的答案。
        猜你喜欢
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2019-07-04
        相关资源
        最近更新 更多