根据 RFC 拆分 URL 路径

Splitting a URL path against RFC

是否有特定的(标准化的)方式将 URL 路径拆分为路径组件?我查看了 RFC 2396,但看不到这样做的例程。

最初我只是使用PHP的explode()方法在遇到每个/时将字符串分解为数组,但在针对Cocoa进行测试时' s NSURL class,我得到两个不同的结果:

测试URL:https://example.com/rest/api///v2.1.1/noun/verb////12345/additional/stuff///

NSURL:

["/", "rest", "api", "v2.1.1", "noun", "verb", "12345", "additional", "stuff", "/“]

我的PHP方法:

Array ( [0] => [1] => rest [2] => api [3] => [4] => [5] => v2.1.1 [6] => noun [7] => verb [8] => [9] => [10] => [11] => 12345 [12] => additional [13] => stuff [14] => [15] => [16] => )

我知道 RFC 2396 已被 RFC 3986 取代,但 NSURL 使用 2396,这就是我正在测试的内容,因为它将是客户端实现。

我不知道执行此操作的任何标准方法,老实说,我对 RFC2396 不是很熟悉。

但是,对于您给出的示例,您可以使用 preg_split('#\/+#', $uriPath) 由任意数量的正斜杠拆分,然后检查结果数组的第一个和最后一个元素是否为空字符串 - 如果是,则替换他们每一个斜线。