有時候我們需要獲取url井號后的參數(即描點#后的參數),如下面的鏈接:http://www.xindingyue.com/example/#comment-1314
現在要獲取#號后面的comment-1314,如何通過php獲取呢?
首先聲明php是無法直接獲取的,因為這是向瀏覽器客戶端發送的參數,在服務端壓根就不接受這樣的參數,$_SERVER["REQUEST_URI"]變量里是不會包含#號后面的東西的,所以無法像我們平時用php處理url那樣了,那到底如何獲取呢?
這是向客戶端發送的參數,所以獲取他只能去到客戶端里獲取,這里有個思路是先用前台javascript腳本獲取后再把獲取到的參數寫入到cookie,下面是javaScript代碼<script>
var query = location.href.split('#');
document.cookies = 'anchor=' + query[1];
<script>
再后就可以通過php讀取cookie里的參數了:<?php
echo $_COOKIE['anchor'];
?>
二者完整結合的代碼<script language="javascript">
query=location.href.split("#");
//簡單判斷是不是我們要的參數
if(query[1] && query[1].indexOf("comment") >= 0){
document.cookie='anchor='+query[1];
if (query[1] != "<?php echo $_COOKIE['anchor']; ?>") {
//第一次獲取后,cookie還沒生效需重載一次
window.location.reload();
}
}
</script>
<?php echo $_COOKIE['anchor']; ?>
這個用javaScript寫入cookie方法獲得井號后的參數,方便是很方便,但是第一次載入這個頁面,都要reload()一次,用戶體驗不是很好吧,改用ajax方法可以解決這個問題,如果對ajax方法熟悉的話參考上面的代碼加以修改也是很簡單的事情,具體就不寫代碼了,因為ajax涉及到不是單頁的事。