Пример ввода пользователем
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-адреса или просто объединяет остальные части обратно вместе …
У меня недавно был такой же вопрос, но это лучше всего работает:
$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; }