2011-03-22 4 views
0

Имея замораживание мозга ...Удалить URL независимо от формата

Есть URL, который может быть в любом из форматов:

http://url.com/stuff 
url.com/somestuff 
www.url.com/otherstuff 
https://www.url.com/morestuff 

Вы получаете картину.

Как удалить часть .com, чтобы оставить только разные детали? Например, выше, будет в конечном итоге:

stuff 
somestuff 
otherstuff 
morestuff 
+0

Вам удалось решить проблему? –

+0

Все еще просматривая ответы. Я думаю, что узнал, что мне нужно быть более конкретным с моими вопросами ... Часть «материала» может содержать любое количество символов, включая другое /. Все ответы велики (хотя parse_url нуждается в версии PHP, которую я не использую, я думаю) – DaisyK

ответ

0

Это должно сделать трюк для вас!

<?php 
$url = "http://url.com/stuff"; 

$querystring = preg_replace('#^(https|http)?(://)?(www.)?([a-zA-Z0-9-]+)\.[a-zA-Z]{2,6}/#', "", $url); 

echo $querystring; 

Я представил этот ответ, потому что я не очень люблю решений с использованием explode(), чтобы справиться с этим. Возможно, ваша строка запроса содержит больше слэшей, поэтому вам придется писать исключения для этих случаев.

+0

Спасибо за это. Это работает идеально для того, что я хотел сделать. (жаль других, потому что я не был в этом вопросе) – DaisyK

+0

На самом деле, это не совсем работает. Вам нужно поменять https и http, потому что он кажется жадным на http – DaisyK

+0

. Я исправил это сейчас. Повторите попытку, чтобы увидеть, все еще ли это –

2

Вы можете достичь этого, используя следующий код:

$com_pos  = strpos($url, '.com/'); 
$stuff_part = substr($url, $com_pos + 5); 


Нажмите here, чтобы увидеть рабочий код.

0

Вы можете использовать explode, чтобы создать массив, а затем получить последний элемент из массива.

$str = 'http://url.com/stuff'; 
$arr = explode('/', $str); 
echo end($arr); // 'stuff' 
+0

Я забыл о конце функции, спасибо. – SIFE

+0

-1 'http: // url.com/some/other/stuff' – RobertPitt

+0

@RobertPitt: пример OP не содержит URL-адресов с более чем одной строкой после' .com', поэтому это решение соответствует примеру OP. –

0
preg_replace("/^(https?:\/\/)?[^\/]+/" ,"", $url); 
0
$path = parse_url('http://url.com/stuff', PHP_URL_PATH); 

Если оставить второй параметр энного вы можете вернуть массив, включая домен и т.д.

+0

Также убедитесь, что ваша строка всегда добавлена ​​к протоколу (например, http: // https: // ftp: //) – plasmid87

+0

И не забудьте снять первый символ, который должен быть косой чертой! – plasmid87

0

Используйте взрывается функция, чтобы разделить строку.

<?php 
$url = "http://url.com/stuff"; 
$stuff = explode("/", $url); 
echo $stuff[sizeof($stuff) - 1]; 
?> 

Я использовал sizeof для доступа к последнему элементу.

Смежные вопросы