Как удалить http, https и slash из пользовательского ввода в php
Пример ввода пользователем
http://domain.com/
http://domain.com/topic/
http://domain.com/topic/cars/
http://www.domain.com/topic/info/
Я хочу, чтобы php-функция сделала вывод вроде
domain.com
domain.com/topic/
domain.com/topic/cars/
www.domain.com/topic/info/
Дайте мне знать:)
Ответы
Ответ 1
Вы должны использовать массив "запрещенных" терминов и использовать 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;
}
Ответ 2
ereg_replace
теперь устарел, поэтому лучше использовать:
$url = preg_replace("(^https?://)", "", $url );
Это удаляет либо http://
, либо https://
Ответ 3
Я бы предложил использовать инструменты, предоставленные PHP, посмотрите parse_url.
<?php
$url = 'http://username:[email protected]/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
Похоже, вам нужно как минимум host
+ path
(добавьте другие, если необходимо, например query
):
$parsed = parse_url('http://www.domain.com/topic/questions/');
echo $parsed['host'], $parsed['path'];
> www.domain.com/topic/questions/
Приветствия
Ответ 4
Вы можете удалить как https, так и http в одной строке с помощью ereg_replace:
$url = ereg_replace("(https?)://", "", $url);
Ответ 5
если его первые символы в строке
вы можете использовать substr (0,8), и он удалит первый 8-й символ
если он не использует функцию str_replace()
http://php.net/manual/en/function.str-replace.php
Ответ 6
Вы можете использовать функциональность parse url PHP. Это будет работать для всех протоколов, даже ftp://или https://
Eiter получает компонент протокола и подставляет его из URL-адреса или просто объединяет остальные части вместе...
http://php.net/manual/de/function.parse-url.php
Ответ 7
У меня недавно был такой же вопрос, но это лучше всего работает:
$url = preg_replace("(https?://)", "", $url );
Очень чистый и эффективный.
Ответ 8
<?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);
?>
Ответ 9
Нашли это 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;
}