【问题标题】:Splitting a URL path against RFC根据 RFC 拆分 URL 路径
【发布时间】:2016-02-02 16:36:58
【问题描述】:

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

最初我只是使用 PHP 的 explode() 方法在遇到每个 / 时将字符串分解为一个数组,但是在针对 Cocoa 的 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,这是我正在测试的,因为它将是客户端实现。

【问题讨论】:

  • 特别要注意,我正在寻找一种方法来找出如何保留特定信息(例如前导和尾随斜杠)以及如何确定不应保留哪些数据- 无需猜测

标签: php url rfc2396


【解决方案1】:

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

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

【讨论】:

  • 这也是我最终采用的类似解决方案。不过谢谢:)
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2011-12-11
  • 2011-05-24
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多