Как избежать 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)

Вот результат онлайн-теста:

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

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

https://3v4l.org/EQhh6

Другие вопросы по тегам