Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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正则表达式模式返回N个slug/chunk(在“/”字符上分隔或拆分),作为与“;友好的;网址?_Php_Regex - Fatal编程技术网

PHP正则表达式模式返回N个slug/chunk(在“/”字符上分隔或拆分),作为与“;友好的;网址?

PHP正则表达式模式返回N个slug/chunk(在“/”字符上分隔或拆分),作为与“;友好的;网址?,php,regex,Php,Regex,我正在寻找一个正则表达式模式,它将返回N个slug/chunk(URL的所有部分,在“/”字符上分隔或拆分),作为来自“友好”URL的匹配项 模式不应包括域或前导斜杠。 此外,该模式应适用于数量未知的段塞和/或斜杠 例如,一些示例URL和所需的返回段/块: “”=数组() “foo/bar/”=数组('foo','bar') “foo/bar/baz”=数组('foo','bar','baz') “foo-bar/baz”=数组('foo-bar','baz') 最后,我需要传递这个rege

我正在寻找一个正则表达式模式,它将返回N个slug/chunk(URL的所有部分,在“/”字符上分隔或拆分),作为来自“友好”URL的匹配项

模式不应包括域或前导斜杠。 此外,该模式应适用于数量未知的段塞和/或斜杠

例如,一些示例URL和所需的返回段/块:

  • “”=数组()
  • “foo/bar/”=数组('foo','bar')
  • “foo/bar/baz”=数组('foo','bar','baz')
  • “foo-bar/baz”=数组('foo-bar','baz')
最后,我需要传递这个regex模式preg_match(或类似)并让它通过函数的$matches参数返回结果

例如:

<?php preg_match($your_pattern, $friendly_url, $your_pattern_matches); ?>

。。。使用explode()可以产生类似的结果

这个模式正在一个比我的小老例子复杂得多的场景中使用;要求使用/强制我通过preg_match为解决方案使用正则表达式模式。基本上,我正在通过preg_match选择一个模式,这就是为什么我需要一个regex模式,而不是简单地使用explode

非常感谢你的帮助

干杯

听起来好像你不必费心处理正则表达式就可以完成这项工作:

$matches = explode('/', $url);
听起来好像你不必费心处理正则表达式就可以完成这项工作:

$matches = explode('/', $url);

首先,请查阅本手册

如果你坚持预赛,看看这个:

$uri = '/foo-bar/baz';

preg_match_all('%[^/]+%', $uri, $matches);

print_r($matches);

首先,请查阅本手册

如果你坚持预赛,看看这个:

$uri = '/foo-bar/baz';

preg_match_all('%[^/]+%', $uri, $matches);

print_r($matches);

对不起,我不认为你能做你想做的事

看完报纸后


你可以看到preg_比赛将在第一场比赛时停止。您需要一个友好url中的匹配数组,但这只能通过多个匹配来实现,以便将值存储在数组中或通过单个匹配来捕获整个内容。这两种情况都不适合您,因此我担心您必须使用preg_match以外的其他产品。

对不起,我认为preg_match无法满足您的需要

看完报纸后


你可以看到preg_比赛将在第一场比赛时停止。您需要一个友好url中的匹配数组,但这只能通过多个匹配来实现,以便将值存储在数组中或通过单个匹配来捕获整个内容。这两种情况都不适合您,因此我担心您将不得不使用preg_match以外的其他方法。

我同意这将起作用,并确实产生所需的结果,但某些边缘情况除外。然而,这个模式正在一个比我的小老例子复杂得多的场景中使用;要求使用/强制我通过preg_match为解决方案使用正则表达式模式。基本上,我正在传递preg_match()一个选择模式,这就是为什么我需要一个正则表达式模式,而不是简单地使用explode。无论如何谢谢你!我同意这将起作用,并产生预期的结果,除了一些边缘的情况。然而,这个模式正在一个比我的小老例子复杂得多的场景中使用;要求使用/强制我通过preg_match为解决方案使用正则表达式模式。基本上,我正在传递preg_match()一个选择模式,这就是为什么我需要一个正则表达式模式,而不是简单地使用explode。无论如何谢谢你!我被迫使用preg_match,所以这不会让我走多远。谢谢你!我被迫使用preg_match,所以这不会让我走多远。谢谢你!我不知道鼻涕虫是什么。您的输入是完整的url吗?你想要域后面的部分吗?输入是在第一个尾随斜杠之后的所有内容,在域名之后。因此,给定url,输入将是“foo/bar/baz”,并且$matches将设置为array('foo'、'bar'、'baz'),因此输入是完整的url,您需要域后的所有内容?输入将是“foo/bar/baz”,并将通过preg_match($pattern,$subject,$matches)中的$matches返回数组('foo','bar','baz')我不知道鼻涕虫是什么。您的输入是完整的url吗?你想要域后面的部分吗?输入是在第一个尾随斜杠之后的所有内容,在域名之后。因此,给定url,输入将是“foo/bar/baz”,并且$matches将设置为array('foo','bar','baz'),因此输入是完整的url,并且您需要域后的所有内容?输入将是“foo/bar/baz”,并将通过preg_match($pattern,$subject,$matches)+1中的$matches返回数组('foo','bar','baz')。仅仅使用
preg\u match()
是无法完成所有您想做的事情的@卡里尔森,听起来你好像把自己画进了一个角落。仅仅使用
preg\u match()
是无法完成所有您想做的事情的@卡里森,听起来你好像把自己画进了一个角落。