【问题标题】:stripping an url from a text从文本中删除 url
【发布时间】:2010-10-23 13:54:02
【问题描述】:

如何去除一个网址并将其放回相同的位置?

【问题讨论】:

    标签: php regex url


    【解决方案1】:

    使用正则表达式..您可以使用正则表达式轻松检测 URL。

    Detecting a URL

    Replacing a Pattern

    【讨论】:

    • 我读到了,它只是说检测,我的问题是提取并将其替换回相同的位置。
    【解决方案2】:

    正则表达式符合 rfc3986 的 url 的方法并不多

    作为 C 字符串,正则表达式为:

    "^(([^:/?#]+):)?(//([^/?#]*)|///)?([^?#]*)(\\?[^#]*)?(#.*)?"
    enum {
        URL = 0,
        SCHEME_CLN = 1,
        SCHEME  = 2,
        DSLASH_AUTH = 3,
        AUTHORITY = 4,
        PATH    = 5,
        QUERY   = 6,
        FRAGMENT = 7
    };
    

    枚举表示哪些捕获索引对应于哪些 url 部分。

    【讨论】:

      【解决方案3】:

      如果您想将相同的 URL 放回其初始位置,您为什么要首先删除它/您到底想做什么。多一点上下文将帮助我们帮助您。

      【讨论】:

      【解决方案4】:

      您可能正在寻找 [preg_replace_callback](http://www.php.net./preg_replace_callback)。

      它只是匹配一个正则表达式模式,将结果提供给您提供的函数,并将原始匹配替换为其返回值。

      【讨论】:

        【解决方案5】:

        Jeff Atwood 有一个informative post,告诉您您可能面临的问题。

        无论您使用哪种编程语言和库,在某些情况下都会遇到问题,例如,在使用简单的正则表达式替换时会出现 --http://www.codinghorror.com/blog/archives/001181.html--

        我不经常使用 PHP,但问题归结为试图找出在 preg_replace 调用中使用的模式。

        【讨论】:

        • 特意将 Jeff 文章的链接与 -- 相邻,以突出在自动完成链接检测时确定 URL 结束位置的困难。要访问该文章,请删除 URL 末尾的两个破折号。
        猜你喜欢
        • 2018-08-27
        • 1970-01-01
        • 2015-09-24
        • 2018-01-14
        • 2016-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多