有分隔符问题。我是PHP的菜鸟,所以如果这是一个非常简单的修复,我很抱歉。之前我正在使用eregi(),但我在这里检查了一个“已弃用”的错误,我发现我必须使用preg_match。无论如何,这是错误:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /home/legitstr/public_html/members/includes/functions.php on line 4
这是我的代码:(之前我已经检查了其他线程,但似乎没有人有类似的代码)
$file = basename(__FILE__);
if(preg_match($file,$_SERVER['REQUEST_URI'])) {
die("Sorry but you cannot access this file directly for security reasons.");
请帮帮我,谢谢!
答案 0 :(得分:2)
尝试:
$file = basename(__FILE__);
if(false !== strpos($_SERVER['REQUEST_URI'], $file)) {
die("Sorry but you cannot access this file directly for security reasons.");
strpos()
或
stripos函数()
对于不区分大小写的匹配,应该更适合您似乎正在做的事情
答案 1 :(得分:0)
你需要用分隔符包围你的正则表达式 - 通常类似于/myregex/
如果您不使用分隔符,则会出现此错误。你可以试试
if(preg_match($file,"|".$_SERVER['REQUEST_URI']."|")) {
由于|
是合法分隔符,may not be used in a legal URL
话虽如此 - 正则表达式是一个强大的工具,如果你正在寻找一个逐字的匹配,它可能是矫枉过正。此外,URL中可能包含各种在regex中具有特殊含义的字符 - 这实际上会导致错误匹配。例如,正则表达式中的.
表示“任何字符”,因此apple.com
将匹配applescom
,这可能不是您想要的。