Intereting Posts
PHP Script для вычисления значений форм со значениями по умолчанию, возможно, с использованием операторов if и else для submit. to page2.php Перейдите на другую страницу после завершения загрузки файлов в dropzone.js v4.0 PHP для галереи изображений, вытащенной из facebook, только захватывает первые 25 изображений как передать переменную php в jquery Массив в Mysql ГДЕ НРАВИТСЯ? Как вы получаете информацию пользователя facebook и вставляете ее в базу данных? magento sales_order_place_after наблюдатель не работает Как получить значение строки запроса из значения URL, хранящегося в переменной? Устаревший: функция split () устарела. Как переписать это заявление? Как я могу дважды использовать mysqli_fetch_array ()? php array и foreach? Лучший способ документировать параметры массива в PHPDoc? вызов командной строки с помощью php Когда мне нужно объявить session_start () ;? Как создать рекурсивную функцию для отображения всех комбинаций многоуровневого массива?

parse_url () возвращает ошибку, когда example.com передается

Согласно следующему коду, если $host_name что-то вроде example.com PHP возвращает уведомление: Message: Undefined index: host но на полные URL-адреса, такие как http://example.com PHP возвращает example.com . Я пробовал, если заявления с FALSE и NULL, но не работают.

 $host_name = $this->input->post('host_name'); $parse = parse_url($host_name); $parse_url = $parse['host']; 

Как я могу изменить скрипт, чтобы принять example.com и вернуть его?

Solutions Collecting From Web of "parse_url () возвращает ошибку, когда example.com передается"

  1. Обновите свой php. 5.4.7 Fixed host recognition when scheme is ommitted and a leading component separator is present.

  2. Добавить схему вручную: if(mb_substr($host_name, 0, 4) !== 'http') $host_name = 'http://' . $host_name; if(mb_substr($host_name, 0, 4) !== 'http') $host_name = 'http://' . $host_name;

Вы можете просто проверить, что схема присутствует, используя filter_var и добавьте одну, если нет

 $host_name = 'example.com'; if (!filter_var($host_name, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) { $host_name = 'http://' . $host_name; } $parse = parse_url($host_name); var_dump($parse); array(2) { ["scheme"]=> string(4) "http" ["host"]=> string(11) "example.com" } 

Просто добавьте схему по умолчанию в этом случае:

 if (strpos($host_name, '://') === false) { $host_name = 'http://' . $host_name; } $parse = parse_url($host_name); 

это примерная функция, которая возвращает реальный хост независимо от схемы.

 function gettheRealHost($Address) { $parseUrl = parse_url(trim($Address)); return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2))); } gettheRealHost("example.com"); // Gives example.com gettheRealHost("http://example.com"); // Gives example.com gettheRealHost("www.example.com"); // Gives www.example.com gettheRealHost("http://example.com/xyz"); // Gives example.com