Php 如何在preg_match()函数中将变量与其他模式一起用作模式?

Php 如何在preg_match()函数中将变量与其他模式一起用作模式?,php,regex,web-crawler,preg-match,preg-match-all,Php,Regex,Web Crawler,Preg Match,Preg Match All,实际上,我正在为我的小项目编写一个网络爬虫。 我只想抓取那些只属于输入网站的网页。我希望我的网络爬虫不爬到其他网站以外的输入,目前 这就是我正在做的: $url=$_POST[“url”]; $web=@file\u get\u contents($url); 预匹配全部(“/ 那么正则表达式应该是: preg_match(“/.*google.com.*/U”,xyz,xyz); 任何其他建议都会有帮助,请提前感谢。将您的分隔符更改为任何URL中都没有的分隔符 preg_match_all(

实际上,我正在为我的小项目编写一个网络爬虫。 我只想抓取那些只属于输入网站的网页。我希望我的网络爬虫不爬到其他网站以外的输入,目前

这就是我正在做的:

$url=$_POST[“url”];
$web=@file\u get\u contents($url);
预匹配全部(“/
那么正则表达式应该是:
preg_match(“/.*google.com.*/U”,xyz,xyz);

任何其他建议都会有帮助,请提前感谢。

将您的分隔符更改为任何URL中都没有的分隔符

preg_match_all("#<a\s.*href=\"(.*$url.*)\"#U", $web, $matches);

preg\u match\u all(“#

我找到了解决方案,这是解决方案。 如果要将变量与正则表达式一起使用

preg_match("/regular_expression".($my_variable)."regular_expression/U", $source, $matches);

真正的解决方案是将a与实际的正则表达式分隔符一起使用,并使用点语法将部分附加到正则表达式文字部分:

preg_match_all("/<a\s.*href=\"(.*" . preg_quote($url, "/") . ".*)\"/U", $web, $matches);
                                   ^ ^^^^^^^^^^       ^^^  ^

preg\u match\u all("/在URL中可以找到磅符号,但这可能会有所帮助。欢迎来到stackoverflow鸣人kun。问一个清楚的问题会让你更容易得到帮助。请阅读本文,确保你得到一个好答案,如果你的
$my_variable
中有一个
/
怎么办?在我的例子中,$my_variable基本上是一个网页的名称,所以变量中不可能有“/”。如果要包含“/”,请在“/”之前加上“\”。例如:如果我要为链接编写regexp,那么我会编写..
preg\U match(/https:\/\/.\.com/U),xyz,xyz)
如果使用变量,则需要
preg_quote
it。使用额外的字符作为regexdelimiter。