有沒有一種方法可以讓我帶出使用PHP例如鏈接中的變量,如果我有一個鏈接,上面寫着http://localhost/link/index.php?s=30&p=3
我將如何去掉?s=30&p=3
所以我的鏈接讀取http://localhost/link/index.php
PHP網址問題
PHP網址問題
回答
試試這個:
$pos = strpos($url, '?');
if($pos !== FALSE) {
$url = substr($url, 0, $pos);
}
不考慮'''不是ppear。 「如果給出的長度爲0,** FALSE **或NULL,則將返回一個空字符串[from substr]。」 – Artefacto 2010-08-12 17:12:58
@Artefacto,現在它:) – 2010-08-12 17:14:13
$url = 'http://localhost/link/index.php?s=30&p=3';
$d = explode("?", $url);
$stripped = reset($d);
我沒有測試過這一點,但你也許可以這樣做:
$my_url = 'http://localhost/link/index.php?s=30&p=3';
$split = explode('?', $my_url);
$new_url = $split[0];
既然你什麼時候可以省略php中的'$':)? – svens 2010-08-12 17:19:00
heh。哦,是的,哎呀。不要寫太多的PHP了。我已更新以免造成混淆。謝謝。 – 2010-08-12 21:23:12
$fullUrl = "http://localhost/link/index.php?s=30&p=3#dontreplace";
$urlData = parse_url($fullUrl);
$url = str_replace('?'.$urlData['query'],'',$fullUrl);
該解決方案考慮到您可以在參數後面加上hashtag並且不會替代它。
如果你只是不在乎以後是什麼?然後用其他的答案
編輯(suggested by Hoohah):
您也可以使用strstr()(PHP 5.3.0以後):
echo strstr($longurl, "?", TRUE);
PHP有一個內置的功能,此。
它是parse_url()。看看可能的返回值。在這種情況下,我們可以使用scheme
,host
和path
。
例如:
<?php
$info = parse_url("http://localhost/link/index.php?s=30&p=3");
echo $info["scheme"] . "://" . $info["host"] . $info["path"];
// Output: http://localhost/link/index.php
?>
這種方法比使用explode()
的好處是,它可以讓你無論你想要顯示的用戶名,密碼和端口如果控制包括在內。上面的代碼不會顯示任何這些,因此http://user:[email protected]:81/link/index.php?s=30&p=3
將返回http://localhost/link/index.php
,剝離用戶名,密碼和端口號,這是我想要的。用戶名,密碼和端口可用$info["user"]
,$info["pass"]
和$info["port"]
。
如果密碼中包含問號,則explode()
方法失敗。 This method doesn't fail even with ?
and @
signs in the password。
最後要注意,如果你將要處理的端口號,用戶名和密碼,你可以用下面的代碼(有一個添加的行)剝離的用戶名和密碼,但保留的端口號:
<?php
$info = parse_url("http://user:__?**@@@@&[email protected]:80/link/index.php?s=30&p=3");
// If port is present add a colon before it, if not make it an empty string.
isset($info["port"]) ? $port = ":" . $info["port"] : $port ="";
echo $info["scheme"] . "://" . $info["host"] . $port . $info["path"];
// Outputs: http://localhost:80/link/index.php
?>
最後,你真的不應該在鏈接使用的用戶名和密碼。從RFC2396
一些URL方案使用的格式:在用戶信息 場「用戶密碼」。不推薦這種做法,因爲已經證明 身份驗證信息以明文形式(如URI)的傳遞在幾乎所有使用它的情況下都是安全風險。
哎。傷害你必須以粗體寫出第一句話。有點尷尬,我們忘了parse_url()存在。這是迄今爲止最乾淨的解決方案,是的。 – scy 2010-08-12 17:37:25
[它失敗的例子](http://codepad.viper-7.com/tkmI8E)。 'parse_url'對此不是很適合。 – Artefacto 2010-08-12 19:00:03
@Artefact - 這不是一個失敗;這是一場勝利。你真的**想把'username'和**'password' **包含到HTML服務器中嗎?這正是'parse_url'很好的原因。順便說一句,如果你想,你**可以**包括那些當存在....只是看看可能的返回值。 – 2010-08-12 19:13:04
parse_url('http://localhost/link/index.php?s=30&p=3',PHP_URL_PATH);
這不起作用(PARSE_URL_PATH甚至不是一個常量,如果使用了PHP_URL_PATH,它只會提供路徑部分),但不知怎的,它會得到兩次投票。 – Artefacto 2010-08-12 19:34:50
$url = strtok($url,"?");
。如果U需要解析請求的URL,U可以簡單地把它從全局:
// http://localhost/foo/bar?foo=bar&Foo1=Bar1
var_dump($_SERVER['QUERY_STRING']); // string(17) "foo=bar&Foo1=Bar1"
如果symfony中/ HTTP的基礎成分時,U可以得到查詢字符串從它的請求類如下:
$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
$queryString = $request->getQueryString();
- 1. PHP當前網址問題
- 2. php網站的網址匹配問題
- 3. 網址注入問題與PHP網站
- 4. 雙重網址編碼問題php
- 5. PHP CodeIgniter網址導航問題
- 6. css問題在網址重寫在PHP
- 7. 我有PHP網址問題閱讀pdf
- 8. PHP:陣列比較問題 - 網址
- 9. 問題Joomla網址
- 10. NSURLConnection:網址問題
- 11. WebBrowser網址問題
- 12. Python網址標題問題
- 13. WP CSS問題/網址問題
- 14. 與codeignitor的網址問題
- 15. Apache網址重寫問題
- 16. 帶網址問題的preg_replace
- 17. UIWebView的網址問題
- 18. JQuery Ajax網址問題
- 19. jmeter網址格式問題
- 20. 問題與WordPress網址
- 21. 網址檢測問題
- 22. 問題wtih網址JSON
- 23. 在網址有問題
- 24. 問題創建網址
- 25. 從網址收到問題
- 26. 網址重寫問題
- 27. Python的網址有問題
- 28. Django網址的問題
- 29. 網頁搜刮網址問題
- 30. 從相關網址獲取絕對網址。 (IE6的問題)
這似乎是這個問題的所有解決方案的母親。一行,不要太慢,即使沒有問號也能正常工作。尼斯。 – scy 2010-08-12 17:32:28