我有一些网址:
dir-1
dir-1/dir-2
dir-1/dir-2/dir-3
dir-1/dir-2/dir-3/dir-[n]..and so on..
我目前的正则表达式(使用PHP)如下所示:
/^([[:lower:][:digit:]\-\/]+)$/
因此正则表达式匹配所有网址。但在我的情况下,我只需要第一个和第二个版本,因此没有或仅出现一次斜杠。
我多次尝试找出正确的方法,但没有结果。
答案 0 :(得分:2)
只需匹配该组字符(减去/
),然后选择/
,然后再次匹配(可选)。
/^([[:lower:][:digit:]-]+\/?[[:lower:][:digit:]-]*)$/
答案 1 :(得分:2)
你可以使用斜杠作为分隔符 -
来爆炸字符串$str = "dir-1/dir-2";
$splitArr = explode('/',$str);
array (
0 => 'dir-1',
1 => 'dir-2',
)
正如您的问题所述,您不是在谈论any old string变量专门购买网址,请务必从字符串的开头删除http
或https
协议:
例如:https://marvin.com/dir-1/dir-2
您可以使用$_SERVER[REQUEST_URI]
变量 - 这会返回相对于网站DOCUMENT ROOT
的当前网址。
因此$_SERVER[REQUEST_URI]
的{{1}}将是:
https://marvin.com/dir-1/dir-2
(看起来很熟悉?)
在/dir-1/dir-2
后,您还可以使用explode()
删除初始的 root 斜杠和
HEY PRESTO!您已避免使用正则表达式!