<?php
if (!preg_match("{(?:login|logout|register)\.php$}", $_SERVER["PHP_SELF"]))
{
if (empty($_SESSION["id"]))
{
redirect("login.php");
}
}
?>
无法理解我的第一个if条件是如何检查login.php,logout.php,register.php以外的页面..什么?:正在做什么?
答案 0 :(得分:0)
?:是non capturing group即,它匹配表达式但不捕获它。
非捕获括号将正则表达式分组,以便您可以应用正则表达式 运营商,但不捕捉任何东西。
例如:
如果我不想捕获http
之类的协议,那么请参阅我将使用以下正则表达式
(?:http|ftp)://([^/\r\n]+)(/[^\r\n]*)?
现在,我的结果如下:
Match "http://google.com/"
Group 1: "google.com"
Group 2: "/"
Match "http://google.com/ABCD/XYZ/PQR"
Group 1: "google.com"
Group 2: "/ABCD/XYZ/PQR"