尝试按域名/
提取所有网址中的任何网址
http://reports.example.com/report?
https://reports.example.com/report?
字符串包含
$string = "http://reports.example.com/report?id=randomtext afdf sadfsdf https://reports.example.com/report?id=randomtext sdfsd sdf afa geadg";
我认为preg_match_all会起作用吗?
$urls = preg_match_all(~http://reports.example.com/reportid=~|https://reports.example.com/report?id=);
我试过这个不起作用,只是获取http ID变量,(urls以空格结束以将它们分开)
preg_match_all("/reports.example.com/main(.*?) \"/is", $contents,
$matches);
foreach ($matches[1] as $url)
{
echo $url. "<br />\n";
}
答案 0 :(得分:1)
s
?
可选,即可使协议安全或不安全。.
是一个特殊字符,在意图是字面意义时应该进行转义(尽管很可能很少会遇到1个字符的URL)。?
也是一个特殊字符并且具有类似的情况,尽管在这种情况下您不会得到匹配,因为?
仅使前面的字符/组可选(它不会将自己匹配为.
。)尝试:
https?://reports\.example\.com/report\?id=[a-z0-9A-Z]+
演示:https://regex101.com/r/Eq6Lea/1/
这也假设id
参数只有字母数字字符,如果允许其他参数添加到该字符类。这也假定URL只有id
参数,并且始终存在。