1

解析 ''/s?a=12&b=12.3.3.4:1233" 时如何避免 php parse_url 返回 false参数中有 ":"

<?php                                                                                                                                                         
var_dump(parse_url('/s?a=12&b=12.3.3.4:1233', PHP_URL_QUERY));

返回

bool(false)

在线运行测试结果如下:

https://3v4l.org/8LKIV


虽然在 php 7.1.7 中测试良好

print_r(parse_url('/s?a=12&b=12.3.3.4:1233', PHP_URL_QUERY));

回报好:

a=12&b=12.3.3.4:1233
4

1 回答 1

2

在 PHP7 中,您可以省略schemeand host,但低于该版本则不能。

因此,您还应该始终包括方案和主机。

<?php
echo 'Without scheme and host'.PHP_EOL;
print_r(parse_url('/s?a=12&b=12.3.3.4:1233', PHP_URL_QUERY));

echo PHP_EOL.PHP_EOL;

echo 'With scheme and host'.PHP_EOL;
print_r(parse_url('http://example.com/s?a=12&b=12.3.3.4:1233', PHP_URL_QUERY));

7.0.0 - 7.2.0 的输出

Without scheme and host
a=12&b=12.3.3.4:1233

With scheme and host
a=12&b=12.3.3.4:1233

5.6.0 - 5.6.30、hhvm-3.18.5 - 3.22.0 的输出

Without scheme and host



With scheme and host
a=12&b=12.3.3.4:1233

https://3v4l.org/EQhh6

于 2017-12-14T07:05:52.550 回答