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

时间:2010-10-27 22:50:00

标签: 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);

$ _GET ['url']可以提供很多东西,但有一种情况是http://freegamesforyourwebsite.com/game/18-wheeler--2.html

该网址的html基本上是

任何人都有线索:S?我甚至不知道从哪里开始cus我不知道什么是modifire并且php.net网站没有帮助

thankyou!

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

你必须逃避你的模式分隔符或使用不同的分隔符:

#                     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);

答案 2 :(得分:0)

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

应该是:

'/<a href="\/download.php\?g=(?P<number>.+)">Click here<\/a>/'

答案 3 :(得分:0)

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

最简单的解决方案是使用正则表达式中未包含的某些字符来分隔它。在这种情况下,@会很好用。

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