Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从正则表达式中获取(部分)变量?_Php_Regex_Path - Fatal编程技术网

Php 如何从正则表达式中获取(部分)变量?

Php 如何从正则表达式中获取(部分)变量?,php,regex,path,Php,Regex,Path,我对正则表达式不太了解,我怀疑是否有可能从正则表达式检查中获取部分变量。我试图解释我在寻找什么 我有这样的道路: example.com/dir1/ example.com/dir1/val1 example.com/dir1/val1-val2 我想创建一个表达式来提取dir1 val1和val2 我的问题是: 我可以只提取存在的变量,还是必须编写3个表达式?我是说 如果我使用一条规则:example.com/dir1/val1-val2 如果我传递的url是:www.example.com

我对正则表达式不太了解,我怀疑是否有可能从正则表达式检查中获取部分变量。我试图解释我在寻找什么

我有这样的道路:

example.com/dir1/
example.com/dir1/val1
example.com/dir1/val1-val2
我想创建一个表达式来提取dir1 val1val2

我的问题是:

我可以只提取存在的变量,还是必须编写3个表达式?我是说

如果我使用一条规则:
example.com/dir1/val1-val2

如果我传递的url是:
www.example.com/category
(dir1=category),那么我只能获得dir1吗

然后,如果url是:
www.example.com/category/car

获取
dir1=category
val1=car
您可以使用explode(“/”,$url);要获得包含所有值的数组,不应使用正则表达式来解决类似这样的问题

explode(“/”,$url)
尽可能简单。如果结构比允许的更复杂,则可以使用preg_split(),并列出可以用作细分器的所有可能字符

$urlParts = preg_split('/[_\/-]/', $url);

@斯蒂夫洛,我怎么用爆炸?URL可以被许多字符细分,例如:example.com/val1-val2/dir1或example.com/dir1/dir2/val1_-val2等。我想我必须先修剪这些字符,否则数组的第一个元素将为空。$urlParts=preg_split('/[\/-]/',$v,-1,preg_split NO_empty);工作做得很完美!!!再次感谢你。