Как избежать php parse_url вернуть false когда parse » / s? A = 12&б = 12.3.3.4: 1233″ который имеет «:» в параметрах?
<?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
В 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 hostWith scheme and host
a=12&b=12.3.3.4:1233
Других решений пока нет …