php url方面的問題,獲取url和引數

2021-06-09 04:50:19 字數 3634 閱讀 2322

使用php編寫程式的時候,我們常常想要獲取當前頁面的url。下面提供乙個用於獲取當前頁面url的函式以及使用方法:

示例一:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

// 說明:獲取完整url

function curpageurl

()$pageurl

.="://";if

($_server

["server_port"]!=

"80"

)else

return

$pageurl;}

?>

定義該函式之後就可以直接呼叫了:

1

2

3

<?php

echo curpageurl

();?>

上面的函式可以獲取當前頁面完整的url,即你在瀏覽器位址列看到的內容。但是,有時候我們不想要url中的引數(?號後面的內容),如:只想獲取你可以將以上函式做以下更改:

示例二:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<?php

// 說明:獲取無引數url

function curpageurl

()$pageurl

.="://"

;$this_page

=$_server

["request_uri"];

// 只取 ? 前面的內容if(

strpos

($this_page

,"?"

)!==

false

)$this_page

=reset

(explode

("?",

$this_page))

;if($_server

["server_port"]!=

"80"

)else

return

$pageurl;}

?>

當然也可以採用$_server['php_self'](該變數不返回url中的引數),

示例三:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

// 說明:獲取無引數url

function curpageurl

()$pageurl

.="://";if

($_server

["server_port"]!=

"80"

)else

return

$pageurl;}

?>

另外,$_server['request_uri']$_server['request_url']是有稍微區別的:

$_server["request_uri"]返回完整的路徑 (/directory/file.ext?query=string)

$_server['request_url']只返回檔案路徑,不包括引數,(/directory/file.ext),和$_server['php_self']差不多,只不過在有些伺服器上$_server['request_url']不可用!

注意:url使用rewrite規則的時候,$_server['php_self']和$_server["request_url"]可能不會返回你想要的東西

最後提醒一點,$_server["request_uri"]只有 apache 才支援,想要乙個獲取$_server['request_uri']值的通用解決方案,可以使用以下方案:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<?php

// 說明:獲取 _server['request_uri'] 值的通用解決方案

// 整理:

function requesturi

()else

else

}return

$uri;}

?>

Linux 系統下獲取有關硬體方面的資訊

dmidecode,不帶選項執行該命令會輸出所有的硬體資訊 dmidecode t 顯示指定條目,比如dmidecode t processor,dmidecode t memory 檢視記憶體插槽數量 哪個插槽有記憶體條,大小是多少 dmidecode grep p a5 memory s dev...

iOS8關於推送方面的問題

因為之前一直沒有做過利用推送聊天,然後最近專案中也出現了推送相關的問題,最主要的是要利用推送來幫助實現im。先說一下所謂的推送機制,我個人理解,所謂的推送無非就是說,每個機器是有自己固定的機器碼的,也就是devicetoken,不管你軟體換了幾個賬號,你的devicetoken是不變的,之所以換了號...

Mysql 學習 MERGE表方面的問題 二

下列是已知關於merge表的問題 如果你使用alter table 來把merge表變為其它表型別,到底層表的對映就被丟失了。取而代之的,來自底層myisam表的行被複製到已更換的表中,該錶隨後被指定新型別。replace不起作用。沒有where子句,或者在任何被對映到乙個開啟的merge表上的任何...