0

我正在匹配路线,所以如果我有一个字符串

"/teacher/jkDfl"

我想检查它是否以

"/teacher/"

我的新手方法是希望这评估为真

preg_match("/^/teacher//", "/teacher/jkDfl")

但我认为问题'/'出在所有角色上,环顾四周,我什么也没有出现。我可能需要在我的 google-fu 上工作,但我认为这对于使用正则表达式 xp 的人来说很简单。

干杯!

4

4 回答 4

4

定界符有些随意,因此,常用的#定界符会起作用:

preg_match("#^/teacher/#",....

如果你非常喜欢/'s,你可以用 's 来逃避它们\

preg_match("/^\/teacher\//",....

... 或者让 PHP 为您执行此操作(适用于用户提供的文字字符串):

preg_match("/^".preg_quote("/teacher/","/")."/",...
于 2012-08-21T18:20:57.053 回答
1

您可以使用 # 作为正则表达式分隔符。

preg_match("#^/teacher/#", "/teacher/jkDfl")

您还可以使用正则表达式捕获各种参数(例如 jkDfl),请参阅:

http://php.net/manual/en/function.preg-match.php

在这种情况下:

if (preg_match("#^/teacher/([^?]*)#", $url, $gregs))
{
    $teacher = $gregs[1]; // "jkDfl"
    ....
}
于 2012-08-21T18:19:36.053 回答
1

您有两个选择:更改分隔符或转义文字。

不同的分隔符:

preg_match("%^/teacher/%", "/teacher/jkDfl");

转义文字:

preg_match("/^\/teacher\//", "/teacher/jkDfl");
//or
preg_match("/^" . preg_quote("/teacher/", "/") . "/", "/teacher/jkDfl");
于 2012-08-21T18:22:20.983 回答
0

它应该是

preg_match("/^\/teacher\//", "/teacher/jkDfl")
于 2012-08-21T18:26:06.867 回答