2015-11-02 80 views
3

是否存在将URL路径拆分为路径组件的特定(标准化)方法?我看过RFC 2396,看不到这样做的例程。根据RFC拆分URL路径

本来我只是用PHP的explode()方法打破字符串到一个数组,当它遇到的每个/,但对可可的NSURL类测试时,我得到两个不同的结果:

测试网址: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,这就是我测试的对象,因为它将作为客户端实现。

+0

特别是,我应该注意到,我正在寻找一种方法来了解如何保留特定信息(如前导斜线和尾随斜线)以及如何确定不应该保留哪些数据 - 而无需猜测 –

回答

0

我不知道有任何标准的方法来做到这一点,说实话,我不熟悉RFC2396。

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

+0

这也是我最后一个类似的解决方案。虽然谢谢:) –