2013-06-23 104 views
4

一個URL的一部分,我有以下PHP變量PHP,刪除變量

$currentUrl 

這個PHP變量返回我當前的URL頁面。例如:它返回:

http://example.com/test-category/page.html?_ore=norn&___frore=norian 

我可以使用什麼PHP代碼將以此爲URL鏈接,並刪除「的.html」後,一切會回到我一個乾淨的URL鏈接,例如:

http://example.com/test-category/page.html 

這將在一個新的變量$ clean_currentUrl返回

+0

http://php.net/manual/en/function.parse-url.php – hjpotter92

回答

1

事情是這樣的:下面

<?php 
$currentUrl = 'http://example.com/test-category/page.html?_ore=norn&___frore=norian'; 

preg_match('~http:\/\/.*\.html~', $currentUrl, $matches); 
print_r($matches); 

見amigura的評論。爲了處理這種情況下,改變正則表達式:

<?php 
$currentUrl = 'http://example.com/test-category/page.html?_ore=norn&___frore=norian'; 

preg_match('~(http:\/\/.*\..+)\?~', $currentUrl, $matches); 
print_r($matches); 
+0

謝謝魯本的代碼,它確實會返回一個乾淨的網址,但它也增加了一些其他的東西。這是它使用你的代碼返回的內容:「Array([0] => example.com/test-category/page.html)」 – RaduS

+0

我怎樣才能讓它返回乾淨的「http://example.com/test-類別/ page.html中?」沒有「陣列([0] =>」在乞討和沒有「)」在最後 – RaduS

+0

print_r只是爲了告訴你結果。你可以通過使用$ matches [0]來實際獲取結果:echo $ matches [0]; – Ruben

1
$parts = explode('?', $currentUrl); 
$url = $parts[0]; 
13

PHP的parse_url()

<?php 
$url = "http://example.com/test-category/page.html?_ore=norn&___frore=norian"; 
$url = parse_url($url); 

print_r($url); 
/* 
Array 
(
    [scheme] => http 
    [host] => example.com 
    [path] => /test-category/page.html 
    [query] => _ore=norn&___frore=norian 
) 
*/ 
?> 

然後你就可以從價值建立你想要的網址。

$clean_url = $url['scheme'].'://'.$url['host'].$url['path']; 
+0

你sugestion也工作得很好。謝謝您的回答 – RaduS

+6

這應該是被接受的答案。這是工作的正確工具。 – TecBrat

+2

嗨TecBrat,的確,這也是正確的答案,我希望我可以接受他們都是正確的。爲了不同的目的,我將使用parse_url()和preg_match。重要的想法是,我瞭解了這兩種解決方案 – RaduS