http - PHP的URL傳參數(英文句號變成了底線)的問題,求解釋。

來源:互聯網
上載者:User

GET參數裡面的.號(英文的句號)會變成_(英文的底線)。
我仔細分析了這個問題,發現確實是這樣。

線上測試地址:
http://moonlordapi.sinaapp.com/test.php?.=1
(不信你自己測。)

所以我現在的問題是……
1.為什麼會這樣?對於這個問題,有沒有什麼官方的解釋或者說明?
2.還有沒有其它的特殊符號會出現這樣奇葩的現象?

————————————————————華麗的分割線————————————————————

UPDATE:
已採納答案。
不過看了下http://php.net/manual/en/language.variables.external.php,那條說明是7年前的了。。。
自己實測了一下(這裡的PHP版本是5.4+):

空格和左中括弧的參數會被忽略(和說明不同)。
chr(128) - chr(159)都不是常見的文本字元了,就不測試了。。。

回複內容:

GET參數裡面的.號(英文的句號)會變成_(英文的底線)。
我仔細分析了這個問題,發現確實是這樣。

線上測試地址:
http://moonlordapi.sinaapp.com/test.php?.=1
(不信你自己測。)

所以我現在的問題是……
1.為什麼會這樣?對於這個問題,有沒有什麼官方的解釋或者說明?
2.還有沒有其它的特殊符號會出現這樣奇葩的現象?

————————————————————華麗的分割線————————————————————

UPDATE:
已採納答案。
不過看了下http://php.net/manual/en/language.variables.external.php,那條說明是7年前的了。。。
自己實測了一下(這裡的PHP版本是5.4+):

空格和左中括弧的參數會被忽略(和說明不同)。
chr(128) - chr(159)都不是常見的文本字元了,就不測試了。。。

在 PHP 中,變數名稱中不能使用句號點(.)。 例如 $a.b 是一個不合法的變數名。因此,PHP 會自動將點替換為底線。

除了點,一些其他字元如果出現在GET參數名中,也將會被自動替換為底線。會被自動替換的字元列表:

chr(32) ( ) (空格)chr(46) (.) (點)chr(91) ([) (中括弧)chr(128) - chr(159) (多個字元)

參考資料:http://php.net/manual/en/language.variables.external.php

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.