答案 0 :(得分:2)
好吧,如果你把这个例子作为uri传递,我在第10行看到你有preg_quote($uri)
。那应该是原因。由于dot(。)在Regex中有意义,因此函数可以逃避它。
但这就是你想要的我相信,因为如果剥去斜线,你的正则表达式将匹配任何字符而不是点(包括点)。所以这些都是有效的:
indexBphp
index-php
indexmphp
index.php
etc...
Dot in Regex意味着匹配此位置的任何角色。所以我相信没有错,对吧?
解决这个问题的一种方法是,如果您仍然希望拥有该点,则可以在两个独立的部分构建正则表达式:
$urlDivided = explode('.php', $url);
$this->finalRegex = preg_quote($urlDivided[0]) . '.php' . preg_quote($urlDivided[1]);
显然,上述方法假设您在网址中始终使用“.php”扩展名。你应该进行健全性检查。