2014-12-27 59 views
1

我有以下數據。從PHP中的字符串中刪除任何類型的URL?

例1

From : http://de.example.ch/biz/barbar-vintage-z%C3%BCrich 

I want: /biz/barbar-vintage-z%C3%BCrich 

並且如果有

http://www.example.ch/biz/barbar-vintage-z%C3%BCrich 

然後 我也想

/biz/barbar-vintage-z%C3%BCrich 
+0

看一看使用['pathinfo'(HTTP:// php.net/manual/en/function.parse-url.php)來做到這一點。 – slugonamission 2014-12-27 17:19:31

+1

只需運行['parse_url()'](https://php.net/manual/en/function.parse-url.php),我認爲它是你想要的'path'元素。你不需要一個正則表達式。 – halfer 2014-12-27 17:20:25

+0

不,但我試用了正則表達式 – 2014-12-27 17:20:40

回答

3

如果你想通過正則表達式來做到這一點,那麼你可以使用:

$s = 'http://de.example.ch/biz/barbar-vintage-z%C3%BCrich'; 
echo preg_replace('~^https?://[^/]+~', '', $s); 
//=> /biz/barbar-vintage-z%C3%BCrich 

否則如評論說的parse_url函數也讓你有這個值。

+1

我可能會爲該正則表達式添加一個開始錨點。 – halfer 2014-12-27 17:23:57

+0

好點@halfer:謝謝我編輯。 – anubhava 2014-12-27 17:24:43

1
function getRelativePath($url) 
{ 
    $matches = array(); 
    if (preg_match('#^(http://|https://)([^./]+\.)+[a-z]{2,3}(/.*)$#', $url, $matches) { 
     return $matches[3]; 
    } else { 
     return false; 
    } 
} 
1

你可以使用preg_matchpreg_match_all

preg_match('~^https?://[^/]+\K.+~', $data, $matches); 

DEMO

0

就試試這個:

<?php 
$url = 'http://de.example.ch/biz/barbar-vintage-z%C3%BCrich'; 
echo preg_replace('~^https?://[^/]+~', '', $url); 
?>