将URL路径根据RFC分割

3
有没有一种特定(标准化)的方法将URL路径拆分成路径组件?我查看了RFC 2396,但没有找到执行此操作的程序。最初,我只是使用了PHP的explode()方法来在遇到每个/时将字符串拆分为数组,但在针对Cocoa的NSURL类进行测试时,结果不同:测试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,而且这也是我测试的对象,因为它将成为客户端的实现。


特别地,我应该注意到我正在寻找一种方法来找出如何预留特定信息(例如前导和尾随斜杠),以及如何确定不应保留哪些数据 - 而不是猜测。 - Adam Carter
1个回答

0

我不知道有任何标准的方法来做这件事,而且说实话,我对RFC2396也不是很熟悉。

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


这是我最终采用的类似解决方案。不过还是谢谢你 :) - Adam Carter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接