【发布时间】:2015-12-02 21:21:06
【问题描述】:
尽我所能,我似乎无法找到正确的正则表达式来找到我想要的内容。
我只想从以下内容中选择与域 www.myweb.com 匹配的 url 的第一个实例...
Some text https://www.myweb.com/page/cat/323123442321-rghe432 and then another https://www.adifferentsite.com/fsdhjss/erwr
我需要完全忽略第二个网址 www.adifferentsite.com,只使用与 www.myweb.com 匹配的第一个网址,忽略任何其他可能的实例www.myweb.com
一旦发现第一个匹配的域,我需要存储它之后的其余 url...
page/cat/323123442321-rghe432
...变成一个新的变量$newvar,所以...
$newvar = 'page/cat/323123442321-rghe432';
我正在尝试:
return preg_replace_callback( '/http://www.myweb.com/\/[0-9a-zA-Z]+/', array( __CLASS__, 'my_callback' ), $newvar );
我已经阅读了大量关于如何检测 url 的文档,但找不到任何关于检测特定 url 的信息。
我真的无法掌握如何制定正则表达式,所以这个公式是不正确的。任何帮助将不胜感激。
编辑将问题编辑得更具体一些,希望更容易解决。
【问题讨论】:
-
如果需要匹配,为什么要替换?当您创建正则表达式时,您是否注意正则表达式分隔符?我猜你得到了一个未知的分隔符错误。
-
我正在替换,因为我要将链接制定为 url 格式不同的 oEmbed 链接。所以myweb.com/page/cat/323123442321-rghe432在这个过滤器之后渲染时会变成embed.myweb.com/page/cat/323123442321-rghe432
-
正则表达式,我只是不明白它是如何工作的。我读了又读,但似乎无法掌握正确的做法。
-
好的,我认为您可以使用
'~\bhttps?://www\.myweb\.com/(\S+)~'正则表达式并将$m[1]推送到“其余URL”的数组中。 -
这是demo 我的意思。