我试图在页面上搜索某些东西,但我一直收到这个愚蠢的错误
这是我得到的错误
警告: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!
答案 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);