2015-07-06 82 views
1

我需要從URL部分去除一部分,我知道在這個網站 很多教程,但我仍然無法得到它...需要幫助的URL

這個樣本網址:

https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn 

我也只是從URL需要這個部分,沒有域,削減和最終網址

want-to-keep-35 

已經嘗試此代碼:

preg_replace('|https?://www\.[a-z\.0-9]+|i', '', $serp); 

但不工作。讓我知道是否有人在這裏可以幫助我,謝謝

+0

爲什麼不Zoid^H^H^H ['parse_url'(HTTP:// PHP。淨/ parse_url)? (和'preg_replace()',順便說一句,不會更新傳遞的變量,它*返回*修改的字符串。) – mario

+0

_「我只有這個部分...」_我很困惑,你想刪除該部分或者得到那部分? – someOne

回答

1

對其進行評估得到你想要的:

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn'; 
$re = '#https://www\..*?\..*?/(.*?)/#i'; 

preg_match($re, $url, $matches); 
echo $matches[1]; // want-to-keep-35 
+0

所以,我瞭解其他一切,但'#'在這裏做什麼?或者更具體地說,它與'/ pattern /'有什麼不同?我懷疑它只是一個分隔符,你可以指定你想要的任何分隔符。 –

+0

@BrianCohan當然,'#'是一個可愛的,小小的&無害的分隔符:) – someOne

+0

今天我學到了一些新東西。分隔符以及如何使用'('pattern')'來挑選部分匹配。 –

0

如果您使用兩種模式並連續運行它們,您將能夠消除第一部分,然後消除第二部分。

模式1將找到http或https然後://。然後,它會讀取所有不是斜槓的內容,直到第一個斜槓有效地從url中刪除域。最後,它會包含你不想要的斜線。

模式2將採用從want-to...開始的字符串,並找到第一個斜槓和其後的所有內容。

$url = "https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn"; 
$pattern1 = "/https?\:\/\/[^\/]+\//"; 
$pattern2 = "/\/.*/"; 
$url = preg_replace($pattern1, '', $url); 
$url = preg_replace($pattern2, '', $url); 
echo $url; 

產生

want-to-keep-35 

您也可以傳遞的模式陣列,並如果就這麼簡單,你可以用下面簡單的辦法,將爲了

$url = "https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn"; 
$patterns = array("/https?\:\/\/[^\/]+\//", "/\/.*/"); 
$url = preg_replace($patterns, '', $url); 
echo $url; 
0

試試這個

<?php 

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn'; 

$parsedURL = parse_url($url); 
echo "<pre>"; 
var_dump(parse_url($url)); 
echo "</pre>"; 


$result = trim($parsedURL['path'], '/'); 
echo $result; 
0

只有,如果你知道域名,爲什麼不直接使用:

$url = 'https://www.domain.com/want-to-keep-35/?idku=rbxbbgh3dKqn'; 
$keep = explode("https://www.domain.com/", $url); 
$keep2 = explode("/", $keep[0]); 

$保持[0]將包含「希望到保持-35/?伊德庫= rbxbbgh3dKqn」

$ keep2 [0]將包含 '希望到保持-35'