首頁 後端開發 php教程 User-Agent字串 以PHP中的 == 運算子進行字串比較

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

Jul 29, 2016 am 08:35 AM

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

以上程式碼輸出結果為:bool(true)  所以,在使用對字串進行比較時,建議使用=== 運算子對字串進行嚴格的檢查,或使用strcmp()等函數,從而避免可能產生的問題。 PHP手冊中的《PHP 類型比較表》對此也有詳細說明。
<span><span>&lt;?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>?&gt;</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>?&gt;</span></span></span> CODE>以上程式碼輸出結果為:bool(true)
  相信用過此函數進行安全性檢查的PHP程式設計人員都知道這會產生怎麼樣的安全問題了吧?幸好
<span><span>&lt;?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>?&gt;</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>?&gt;</span><p></p></span>

輸出結果為:

bool(false)

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

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles