User-Agent字串 以PHP中的 == 運算子進行字串比較

WBOY
發布: 2016-07-29 08:35:16
原創
973 人瀏覽過

最近在Greg Beaver's的blog上發表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 運算子在對字串進行比較時值得注意的問題。
  在某些情況下,PHP會把類別數值資料(如含有數字的字串等)轉換成數值處理,== 運算子就是其中之一。在使用== 運算子對兩個字串進行鬆散比較時,PHP會把類別數值的字串轉換為數值進行比較,下面的實驗證實了這個結論:
<span><span><code><span><span><br><span><?php</SPAN><BR><SPAN>var_dump</SPAN></SPAN><SPAN>(</SPAN><SPAN>'01' </SPAN><SPAN>== </SPAN><SPAN>1</SPAN><SPAN>);<BR></SPAN><SPAN><SPAN><SPAN>?></span><br></span></span>var_dump('01 ' == 1);
?>

以上程式碼輸出結果為:bool(true)  所以,在使用對字串進行比較時,建議使用=== 運算子對字串進行嚴格的檢查,或使用strcmp()等函數,從而避免可能產生的問題。 PHP手冊中的《PHP 類型比較表》對此也有詳細說明。
<span><span><?php<BR>var_dump</SPAN><SPAN>(</SPAN><SPAN>in_array</SPAN><SPAN>(</SPAN><SPAN>'01'</SPAN><SPAN>, array(</SPAN><SPAN>'1'</SPAN><SPAN>)));<BR></SPAN><SPAN><SPAN>?></span><br></span>  除此之外,常用的in_array()函數也存在弱類型的問題,請參見如下代碼:
<span><span><?php <BR>var_dump</span><span>(</span><span>in_array</span><span>(</span><span>'01'</span><span>, array(</span><span>'1'</span><span>)));<br></span><span><span>?></span></span></span> CODE>以上程式碼輸出結果為:bool(true)
  相信用過此函數進行安全性檢查的PHP程式設計人員都知道這會產生怎麼樣的安全問題了吧?幸好
<span><span><?php <BR>var_dump</SPAN><SPAN>(</SPAN><SPAN>in_array</SPAN><SPAN>(</SPAN><SPAN>'01'</SPAN><SPAN>, array(</SPAN><SPAN>'1'</SPAN><SPAN>), </SPAN><SPAN>true</SPAN><SPAN>)); <BR></SPAN><SPAN><SPAN>?></span><br></span>in_array()函數為我們提供了第三個參數,把它設為true 就可以打開
in_array()函數的強制類型檢查機制,如下程式碼所示:
<span><span><?php <FONT face=Verdana size=2>var_dump</span><span>(</span><span>in_array</span><span>(</span>'01'</span><span>, array(</span><span>'1'</span><span>), </span><span>true</span><span>) ); </span><span><span>?></span><p></p></span>

輸出結果為:

bool(false)

  由於PHP是一種弱型態的語言,也就是說資料型態這個概念在PHP中被弱化。因而如果在程式設計時過度忽略資料類型(也是大部份PHP程式設計師的通病),會產生一些問題,甚至導致安全漏洞。最後,還是那句說得很煩的話,對外來資料進行嚴格檢查和過濾。 以上就介紹了User-Agent字串 用PHP中的 == 運算子進行字串比較,包括了User-Agent字串方面的內容,希望對PHP教程有興趣的朋友有所幫助。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!