php 搜索内容包含斜杠,php – 解析没有路径但在查询中带有斜杠的URL

我解析URL的问题比没有路径但查询中有斜杠有问题.例如:http://example.com?q = a / b

我知道这样的URL很可能是无效的(*) – 它至少需要一个斜杠作为这样的路径:http://example.com/?q = a / b.

我尝试过这种URL的所有浏览器都会自动更正URL.这基本上就是我想要重现的:识别并纠正这样的URL.

然而,使用parse_url会产生:

var_dump( parse_url('http://example.com?q=a/b') );

array(3) {

["scheme"]=>

string(4) "http"

["host"]=>

string(15) "example.com?q=a"

["path"]=>

string(2) "/b"

}

虽然在查询中没有斜杠的URL可以正常工作:

var_dump( parse_url('http://example.com?q=ab') );

array(3) {

["scheme"]=>

string(4) "http"

["host"]=>

string(11) "example.com"

["query"]=>

string(4) "q=ab"

}

我尝试过的所有外部库(Jwage\Purl,League\Url,Sabre\Uri)基本上都做同样的事情,这让我感到很惊讶.

为什么(所有?)浏览器“正确”,而(所有?)PHP库让它“错误”?

除了在解析URL之前尝试使用正则表达式捕获这些情况(这可能是不可靠的 – 这就是我想首先使用库的原因),我还有哪些替代方案?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值