PHP中將字符串轉化為整數
早在Sql注入橫行的前幾年,字符串轉化為整數就已經被列為每個web程序必備的操作了。web程序將get或post來的id、整數等值強制經過轉化函數轉化為整數,過濾掉危險字符,儘可能降低系統本身被Sql注入的可能性。
背景、概述
早在Sql注入橫行的前幾年,字符串轉化為整數就已經被列為每個web程序必備的操作了。web程序將get或post來的id、整數等值強制經過轉化函數轉化為整數,過濾掉危險字符,儘可能降低系統本身被Sql注入的可能性。
現如今,雖然Sql注入已經逐漸淡出歷史舞台,但是,為了保證web程序的正常運行,減少出錯概率,更好的保證用的滿意度,我們同樣需要將用户的不正確輸入轉化為我們所需要的。
轉化方式
在PHP中,我們可以使用3種方式將字符串轉化為整數。
1.強制類型轉換方式
強制類型轉換方式,就是“在要轉換的變量之前加上用括號括起來的目標類型”(摘自PHP手冊“類型戲法”節)的方式。
複製代碼 代碼如下:
<?php
$foo = "1"; // $foo 是字符串類型
$bar = (int)$foo; // $bar 是整型
?>
對於整型來説,強制轉換類型名稱為int或者integer。
2.內置函數方式
內置函數方式,就是使用PHP的內置函數intval進行變量的轉換操作。
複製代碼 代碼如下:
<?php
$foo = "1"; // $foo 是字符串類型
$bar = intval($foo); // $bar 是整型
?>
intval函數的格式為:
int intval(mixed $var [, int $base]); (摘自PHP手冊)
雖然PHP手冊中明確指出,intval()不能用於array和object的轉換。但是經過我測試,轉換array的時候不會出任何問題,轉換值為1,而不是想象中的0。恐怕是因為在PHP內部,array類型的變量也被認為是非零值得緣故吧。轉換object的時候,PHP會給出如下的 notice:
Object of class xxxx could not be converted to int in on line xx
轉換值同樣為1。
3.格式化字符串方式
格式化字符串方式,是利用sprintf的%d格式化指定的.變量,以達到類型轉換的目的。
複製代碼 代碼如下:
<?php
$foo = "1"; // $foo 是字符串類型
$bar = sprintf("%d", $foo); // $bar 是字符串類型
?>
嚴格意義上講sprintf的轉換結果還是string型,因此它不應該算是字符串轉化為整數的方式。但是經過他處理之後的字符串值確實已經成為了“被強制轉化為字符串類型的整數”。
實際測試
上面介紹了PHP中,將字符串轉化為整數的3種方式。對於一般的程序員來説,看到這裏就算結束了,下面的部分是針對變態程序員的。
1.基本功能測試
設定以下數組:
複製代碼 代碼如下:
<?php
$a[] = "1";
$a[] = "a1";
$a[] = "1a";
$a[] = "1a2";
$a[] = "0";
$a[] = array('4',2);
$a[] = "2.3";
$a[] = "-1";
$a[] = new Directory();
?>
使用三種方式依次轉化上面給出的數組中的元素,查看轉換情況。程序源代碼如下:
複製代碼 代碼如下:
<?php
$a[] = "1";
$a[] = "a1";
$a[] = "1a";
$a[] = "1a2";
$a[] = "0";
$a[] = array('4',2);
$a[] = "2.3";
$a[] = "-1";
$a[] = new Directory();
// int
print "(int)<br />";
foreach($a as $v)
{
var_dump((int)$v);
print "<br />";
}
// intval
print "intval();<br />";
foreach($a as $v)
{
-
PHP開發的安全問題
p給了開發者極大的靈活性,但是這也為安全問題帶來了潛在的隱患,下面是小編分享的PHP開發的安全問題,一起來看一下吧。安全保護一般性要點不相信表單對於一般的Javascript前台驗證,由於無法得知用户的行為,例如關閉了瀏覽器的javascript引擎,這樣通過POST惡意數據到服...
-
10個免費PHP腳本下載的網站
導語:你知道哪些網站可以免費寫真PHP腳步語言嗎?下面的是本站小編為大家蒐集的10個提供免費PHP腳本下載的網站,希望對你能有所幫助。Junkyard這裏提供免費的PHP腳本下載。包括PHP資源,教程,文章等等。為你提供分類列表,包括免費的PHP腳本,商業PHP腳本,PHP資源,PHP教程,網...
-
用PHP讀取文件的正確方法
處理諸如PHP之類的現代編程語言的樂趣之一就是有大量的選項可用。PHP可以輕鬆地贏得Perl的座右銘There‘smorethanonewaytodoit(並非只有一種方法可做這件事),尤其是在文件處理上。但是在這麼多可用的選項中,哪一種是完成作業的最佳工具?當然,實際答案取決於...
-
PHP考試筆試題
用寶珠打扮自己,不如用知識充實自己。以下是小編為大家搜索整理的PHP考試筆試題,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!1、{PHP題目}標識符是變量的名稱。PHP中的標識符用$+變量名來表示。標識符在PHP中遵循下列選項中的那些規則?()...