php正则表达式错误,未知修饰符';d';
我试图在页面上搜索一些东西,但我总是遇到这个愚蠢的错误 这就是我得到的错误 警告:preg_match()[function.preg match]:未知修饰符“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
$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,谢谢你的评论!这帮我解决了一个完全不同的问题。