Как избежать возврата php parse_url, если parse & quot; / s? A = 12 & amp; b = 12.3.3.4: 1233 & quot; который имеет & quot;: & quot; в парамах?

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

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

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 hostWith scheme and host
a=12&b=12.3.3.4:1233

https://3v4l.org/EQhh6

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]