【问题标题】:How to add % to the following preg_replace code and how it works如何将 % 添加到以下 preg_replace 代码及其工作原理
【发布时间】:2014-10-27 06:04:53
【问题描述】:

这是代码

    preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '<a href="$1">$1</a>', $s);

这里的问题是它没有检测到这个 url

    http://localhost:88/xyz%20abc/abc/Result%20Publication%20Page.php

虽然它检测到第一个 %20,但它没有检测到 url 末尾的其他 %20。

抱歉这个菜鸟问题。我搜索了但没有得到具体的答案。

提前致谢。

【问题讨论】:

  • 每个要匹配的 url 是否以 https?:// 开头还是必须是可选的?
  • 如果要匹配url可以使用(https?://)?\S+
  • @Fede 与(https?://)?\S+ 匹配almost everything,这就是我问的原因:)
  • @Jonny5 是的,我知道,但 OP 使用它

标签: regex url preg-replace friendly-url


【解决方案1】:

只需删除第一个点之前的\

((https?://)?([-\w]+.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)

DEMO

((https?://)?([-\w]+[.:%][-\w\./]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)

DEMO

第一组包含您想要的链接。

【讨论】:

    猜你喜欢
    • 2015-03-11
    • 1970-01-01
    • 2021-07-07
    • 2012-03-23
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多