php正则表达式错误,未知修饰符';d';

php正则表达式错误,未知修饰符';d';,php,regex,preg-match,Php,Regex,Preg Match,我试图在页面上搜索一些东西,但我总是遇到这个愚蠢的错误 这就是我得到的错误 警告:preg_match()[function.preg match]:未知修饰符“d” 这是我使用的代码 $qa = file_get_contents($_GET['url']); preg_match('/<a href="/download.php\?g=(?P<number>.+)">Click here</a>/',$qa,$result); $qa=file\u ge

我试图在页面上搜索一些东西,但我总是遇到这个愚蠢的错误

这就是我得到的错误

警告:preg_match()[function.preg match]:未知修饰符“d”

这是我使用的代码

$qa = file_get_contents($_GET['url']);
preg_match('/<a href="/download.php\?g=(?P<number>.+)">Click here</a>/',$qa,$result);
$qa=file\u get\u contents($\u get['url']);
预匹配(“/”,$qa,$result);
而且$_GET['url']可以提供很多东西,但有一种情况是这样的

该url的html基本上是

有人有线索吗?我甚至不知道从哪里开始,因为我不知道modifire是什么,php.net网站也帮不上忙


谢谢

您需要在download.php之前转义“/”,否则它会认为您正在结束正则表达式并提供“d”作为正则表达式的修饰符。您还需要转义结束锚标记中的下一个“/”

preg_match('/<a href="\/download.php\?g=(?P<number>.+)">Click here<\/a>/',$qa,$result);
preg_match('/单击此处/',$qa,$result);

您的正则表达式需要正确转义

应该是:

'/<a href="\/download.php\?g=(?P<number>.+)">Click here<\/a>/'
“/单击此处/”

您必须转义模式分隔符或使用不同的分隔符:

#                     v- escape the '/'
preg_match('/<a href="\/download.php\?g=(?P<number>.+)">Click here</a>/',$qa,$result);

#           v- use hatch marks instead
preg_match('#<a href="/download.php\?g=(?P<number>.+)">Click here</a>#',$qa,$result);
#v-转义“/”
预匹配(“/”,$qa,$result);
#v-改用图案填充标记
preg#u match(“##,$qa,$result);

问题在于正则表达式由
/
字符分隔,但也包含
/
字符作为数据。它抱怨的是
/download
——它认为
/
结束了正则表达式,后面的
d
是正则表达式的修饰符。但是,没有这样的修饰符
d

最简单的解决方案是使用正则表达式中不包含的字符对其进行分隔。在这种情况下,
@
会很好地工作

preg_match('@<a href="/download.php\?g=(?P<number>.+)">Click here</a>@',$qa,$result);
preg_匹配('@@',$qa,$result);

实际上应该是:
“/单击此处/”
。您忘记了在“download.php”中逃逸“.”每个人都说逃逸,没有人提到,这正是您所需要的。悲伤,悲伤的世界…@Wrikken,谢谢你的评论!这帮我解决了一个完全不同的问题。