Как избежать php parse_url, возвращающего false, когда parse "/s?a=12&b=12.3.3.4:1233" with ":" в параметрах?
Как избежать php parse_url, возвращающего false, когда parse '' /s?a=12&b=12.3.3.4:1233 "with ":"в параметрах?
<?php
var_dump(parse_url('/s?a=12&b=12.3.3.4:1233', PHP_URL_QUERY));
возвращается
bool(false)
Вот результат онлайн-теста:
пока тест хорош в 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
1 ответ
Решение
В PHP7 вы можете опустить scheme
а также 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, ччвм-3.18.5 - 3.22.0
Without scheme and host
With scheme and host
a=12&b=12.3.3.4:1233