Как удалить http, https и slash из пользовательского ввода в php

Пример ввода пользователем

http://domain.com/ http://domain.com/topic/ http://domain.com/topic/cars/ http://www.domain.com/topic/questions/ 

Я хочу, чтобы функция php делала вывод как

 domain.com domain.com/topic/ domain.com/topic/cars/ www.domain.com/topic/questions/ 

Дай мне знать 🙂

Вы должны использовать массив «запрещенных» терминов и использовать strpos и str_replace для динамического удаления их из переданного URL:

 function remove_http($url) { $disallowed = array('http://', 'https://'); foreach($disallowed as $d) { if(strpos($url, $d) === 0) { return str_replace($d, '', $url); } } return $url; } 

ereg_replace теперь устарел, поэтому лучше использовать:

 $url = preg_replace("(^https?://)", "", $url ); 

Это удаляет либо http:// либо https://

Я бы предложил использовать инструменты, предоставленные PHP, посмотрите на parse_url .

 <?php $url = 'http://username:password@hostname/path?arg=value#anchor'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); ?> 

Вышеприведенный пример выводит:

 Array ( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) /path 

Похоже, вы прошли хотя бы по path host + (добавьте другие по необходимости, например, query ):

 $parsed = parse_url('http://www.domain.com/topic/questions/'); echo $parsed['host'], $parsed['path']; > www.domain.com/topic/questions/ 

ура

Вы можете удалить как https, так и http в одной строке с помощью ereg_replace:

 $url = ereg_replace("(https?)://", "", $url); 

если его первые символы в строке вы можете использовать substr (0,8), и он удалит первый восьмой символ, если не использует функцию str_replace () http://php.net/manual/en/function .str-replace.php

Вы можете использовать функцию parse url Функциональность PHP. Это будет работать для всех протоколов, даже ftp: // или https: //

Eiter получает компонент протокола и подставляет его из URL-адреса или просто объединяет остальные части обратно вместе …

http://php.net/manual/de/function.parse-url.php

У меня недавно был такой же вопрос, но это лучше всего работает:

 $url = preg_replace("(https?://)", "", $url ); 

Очень чистый и эффективный.

 <?php // user input $url = 'http://www.example.com/category/website/wordpress/wordpress-security/'; $url0 = 'http://www.example.com/'; $url1 = 'http://www.example.com/category/'; $url2 = 'http://www.example.com/category/website/'; $url3 = 'http://www.example.com/category/website/wordpress/'; // print_r(parse_url($url)); // echo parse_url($url, PHP_URL_PATH); $removeprotocols = array('http://', 'https://'); echo '<br>' . str_replace($removeprotocols,"",$url0); echo '<br>' . str_replace($removeprotocols,"",$url1); echo '<br>' . str_replace($removeprotocols,"",$url2); echo '<br>' . str_replace($removeprotocols,"",$url3); ?> 

Нашли это http://refactormycode.com/codes/598-remove-http-from-url-string

 function remove_http($url = '') { if ($url == 'http://' OR $url == 'https://') { return $url; } $matches = substr($url, 0, 7); if ($matches=='http://') { $url = substr($url, 7); } else { $matches = substr($url, 0, 8); if ($matches=='https://') $url = substr($url, 8); } return $url; }