[英]PHP special regular expression pattern to match URLs after a specific string
[英]Regular expression to find specific URLs within a string in PHP
我正在寻找大文本字符串中的特定URL,这些URL的格式如下:
https://name.myurl.com/#/shop/ rmpa8cmnfg3eerpus3ap9jwekz6k77pnj2pg50ua / login
*粗体部分是随机的。
目前,我可以使用以下方法推断所有 URL:
preg_match_all('!https?://\S+!', $string, $matches);
然后,我需要遍历并使用以下命令拉出所有包含特定字符串的URL:
$arr = $matches[0];
foreach ($arr as $haystack) {
if (strlen(strstr($haystack,"shop"))>0) {
echo $haystack;
}
}
我正在尝试使代码更高效,并且似乎无法确定可以找到所有匹配的URL的正则表达式:
https://name.myurl.com/#/shop/rmpa8cmnfg3eerpus3ap9jwekz6k77pnj2pg50ua/login
如果可以的话,可以减少第二次字符串查找的需要。
任何帮助将非常感激。
谢谢
关键是您需要问自己,您需要匹配的字符串中有什么特别的。 如果URL包含感兴趣的子路径,则该子部分是第二部分,或者是末尾部分,或者它由字母和数字组成,等等。
一旦知道要匹配的内容,就可以开始使用正则表达式。
似乎您需要将URL与/shop/
子路径进行匹配。 然后,您所需要做的就是将该子模式包括在模式中。 由于它是字符的文字序列,因此没有什么困难:
'~https?://\S+/shop/\S+~'
^^^^^^
如果您要做的只是验证/shop/
部分是否为URL的一部分,请使用:
https?:\/\/\S*\/shop\/\S*
它基本上是您的正则表达式,另外还要求在协议部分(http(s)://)之后使用/shop/
,并允许在shop-part之前和之后使用非空格字符。
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.