【发布时间】:2010-10-23 13:54:02
【问题描述】:
如何去除一个网址并将其放回相同的位置?
【问题讨论】:
如何去除一个网址并将其放回相同的位置?
【问题讨论】:
【讨论】:
正则表达式符合 rfc3986 的 url 的方法并不多
作为 C 字符串,正则表达式为:
"^(([^:/?#]+):)?(//([^/?#]*)|///)?([^?#]*)(\\?[^#]*)?(#.*)?"
enum {
URL = 0,
SCHEME_CLN = 1,
SCHEME = 2,
DSLASH_AUTH = 3,
AUTHORITY = 4,
PATH = 5,
QUERY = 6,
FRAGMENT = 7
};
枚举表示哪些捕获索引对应于哪些 url 部分。
【讨论】:
如果您想将相同的 URL 放回其初始位置,您为什么要首先删除它/您到底想做什么。多一点上下文将帮助我们帮助您。
【讨论】:
您可能正在寻找 [preg_replace_callback](http://www.php.net./preg_replace_callback)。
它只是匹配一个正则表达式模式,将结果提供给您提供的函数,并将原始匹配替换为其返回值。
【讨论】:
Jeff Atwood 有一个informative post,告诉您您可能面临的问题。
无论您使用哪种编程语言和库,在某些情况下都会遇到问题,例如,在使用简单的正则表达式替换时会出现 --http://www.codinghorror.com/blog/archives/001181.html--。
我不经常使用 PHP,但问题归结为试图找出在 preg_replace 调用中使用的模式。
【讨论】: