PHP中常用的字串格式化函數總結,php函數
字串的格式化就是將字串處理為某種特定的格式。通常使用者從表單中提交給伺服器的資料都是字串的形式,為了達到期望的輸出效果,就需要按照一定的格式處理這些字串後再去使用。經常見到的字串格式化函數如所示:
注意:在PHP中提供的字串函數處理的字串,大部分都不是在原字串上修改,而是返回一個格式化後的新字串。
一、取出空格和字串填補函數
空格也是一個有效字元,在字串中也會佔據一個位置。使用者在表單輸入資料時,經常在無意中會多輸入一些無意義的空格。因此PHP指令碼在接收到通過表單處理過來的資料時,首先處理的就是字串中多餘的空格,或者其他一些沒有意義的符號。在PHP中可以通過ltrim()、rtrim()和trim()函數來完成這項工作。這三個函數的文法格式相同,但作用有所不同。他們的文法格式如下所示:
複製代碼 代碼如下:
string ltrim(string str[,string charlist]) //從字串左側刪除空格或其他預定義字元
string rtrim(string str[,string charlist]) //從字串右側刪除空白字元或其他預定義字元
string trim(string str[,string charlist]) //從字串的兩端刪除空白字元或其他預定義字元
這三個函數分別用於從字串的左、右和兩端刪除空白字元或其他預定義字元。處理後的結果都會以新字串的形式返回,不會在原字串上修改。其中第一個參數str是待處理的字串,為必選項。第二個參數charlist是過濾字串,用於指定希望去除的特殊符號,該參數為可選。如果不指定過濾字串,預設情況下會去掉下列字元。
★”":空格
★”0\”:NULL
★”\t”:定位字元
★”\n”:新行
★”\r”:斷行符號
此外還可以使用“..”符號指定需要去除的一個範圍,例如“0..9”或“a..z”表示去掉ASCII碼值中的數字和小字母。它們的使用代碼如下所示:
複製代碼 代碼如下:
<?php
$str = "123 This is a test ..."; //聲明一個測試字串,左側為數字開頭,右側為省略符號
echo ltrim($str,"0..9"); //過濾掉字串左側的數字,輸出This is a test ...
echo rtrim($str,".") //過濾掉字串右側的所有“.”,輸出:123 This is a test
echo trim($str,"0..9 A..Z ."); //過濾掉字串兩端的數字和大寫字母還有“.”,輸出:his is a test
?>
不僅可以按需求過濾掉字串中的內容,還可以使用str_pad()函數按需求對字串進行填補。可以用於對一些敏感資訊的保護,例如資料的對並排列等。其函數的原型如下所示:
複製代碼 代碼如下:
string str_pad(string input,int pad_length[,string pad_string[,int pad_type]])
該函數有4個參數,第一個參數指明要處理的字串。第二個參數給定處理後字串的長度,如果該值小於原始字串的長度,則不進行任何操作。第三個參數指定填補時所用的字串,它為選擇性參數,如果沒有指定則預設使用空格填補。最後一個參數指定填補的方向,它有三個可選值:STR_PAD_BOTH、STR_PAD_LEFT和STR_PAD_RIGHT,分別代表在字串兩端、左和右進行填補。也是一個選擇性參數,如果沒有指定,則預設值是STR_PAD_RIGHT。函數str_pad()的使用代碼如下所示:
複製代碼 代碼如下:
<?php
$str = "LAMP";
echo str_pad($str,10); //指定長度為10,預設使用空格在右邊填補“LAMP”
echo str_pad($str,10,"-="STR_PAD_LEFT); //指定長度為10,指定在左邊填補“-=-=-=LAMP”
echo str_pad($str,10,"_"STR_PAD_BOTH); //指定長度為10,指定在左邊填補“___LAMP___”
?>
二、字串大小寫轉換
在PHP中提供了4個字串大小寫轉換函式,它們都只有一個選擇性參數,即傳入要進行轉換的字串。可以直接使用這些函數完成大小寫轉換的操作。函數strtoupper()用於將給定的字串全部轉換為大寫字母;函數strtolower()用於將給定的字串全部轉換為小寫字母;函數ucfirst()用於將給定的字串中的首字母轉換為大寫,其餘字元不變;函數ucwords()用於將給定的字串中全部以空格分割的單詞首字母轉換為大寫。下面的程式是這些函數的使用代碼,如下所示:
複製代碼 代碼如下:
<?php
$lamp = "lamp is composed of Linux 、Apache、MySQL and PHP";
echo strtolower($lamp); //輸出:lamp is composed of linux、apache、mysql and php
echo strtoupper($lamp); //輸出:LAMP IS CONPOSED OF LINUX、APACHE、MYSQL AND PHP
echo ucfirst($lamp); //輸出:Lamp is composed of Linux 、Apache、MySQL and PHP
echo ucwords($lamp); //輸出: Lamp Is Composed Of Linux 、Apache、MySQL And PHP
?>
這些函數只是按照他們說明描述的方式工作,要想確保一個字串的首字母是大寫字母,而其餘的都是小寫字母,就需要使用符合的方式。如下所示:
複製代碼 代碼如下:
<?php
$lamp = "lamp is composed of Linux 、Apache、MySQL and PHP";
echo ucfirst(strtolower($lamp)); //輸出:Lamp is composed of linux、apache、mysql and php
?>
三、和HTML標籤相關的字串格式化
HTML的輸入表單和URL上附加資源是使用者將資料提交給伺服器的途徑,如果不能很好地處理,就有可能成為駭客攻擊伺服器的入口。例如,使用者在發布文章時,在文章中如果包含一些HTML格式標記或JavaScript的頁面轉向等代碼了,直接輸出顯示則一定會使用頁面的布局發生改變。因為這些代碼被發送到瀏覽器中,瀏覽器會按有效代碼去解釋。所以在PHP指令碼中,對使用者提交的資料內容一定要先處理。在PHP中為我們提供了非常全面的HTML相關的字串格式化函數,可以有效地控制HTML文本的輸出。
①函數nl2br()
在瀏覽器中輸出的字串“
”標記換行,而很多人習慣使用“\n”作為分行符號號,但瀏覽器中不識別這個字串的分行符號。即使有多行文本,在瀏覽器中顯示時也只有這一行。nl2br()函數就是在字串中的每個新行“\n”之前插入HTML分行符號“
”。該函數的使用如下所示:
複製代碼 代碼如下:
<?php
echo nl2br("One line.\nAnother line."); //在“\n”前加上“
”標記
/*輸出以下兩行結果
One line.
Another line.
*/
?>
②函數htmlspecialchars()
如果不希望瀏覽器直接解析HTML標記,就需要將HTML標記中的特殊字元轉換成HTML實體。例如,將“<”轉換為“<”,將“>”轉換為“>”。這樣HTML標記瀏覽器就不會去解析,而是將HTML文本在瀏覽器中原樣輸出。PHP中提供的htmlspecialchars()函數就可以將一些預定義的字串轉換為HTML實體。此函數用在預防使用者提供的文字中包含了HTML的標記,像是布告欄或是訪客留言板這方面的應用。以下是該函數可以轉換的字元:
★“&”(和號)轉換為“&”。
★“””(雙引號)轉換為“"”。
★“'”(單引號)轉換為“'”。
★“<”(小於)轉換為“<”。
★“>”(大於)轉換為“>”。
該函數的原型如下:
複製代碼 代碼如下:
string htmlspecialchars(string string [,int quote_style[,string charset]])
該函數中第一個參數是帶有HTML標記待處理的字串。第二個參數用來決定引號的轉換方式。預設值為ENT_COMPAT將只轉換雙引號,而保留單引號;ENT_QUOTES將同時轉換這兩種引號;而ENT_NOQUOTES將不對引號進行轉換。第三個參數用於指定所處理字串的字元集,預設的字元集是“ISO88511-1”。
複製代碼 代碼如下:
<?php
$str = "WebServer: & 'Linux' & 'Apache'"; //將有HTML標記和單引號的字串
echo htmlspecialchars($str,ENT_COMPAT); //轉換HTML標記和轉換雙引號
echo "
\n";
echo htmlspecialchars($str,ENT_QUOTES); //轉換HTML標記和轉換兩種引號
echo "
\n";
echo htmlspecialchars($str,ENT_NOQUOTES); //轉換HTML標記和不對引號轉換
echo "
\n";
?>
在瀏覽器中的輸出結果
複製代碼 代碼如下:
WebServer: & ‘Linux' & ‘Apache'
WebServer: & ‘Linux' & ‘Apache'
WebServer: & ‘Linux' & ‘Apache'
如果在瀏覽器中查看原始碼,會看到如下結果:
複製代碼 代碼如下:
WebServer:&'Linux'&'Apache'
//沒有轉換單引號
WebServer:&'Linux'&'Apache'
WebServer:&'Linux'&'Apache' //沒有轉換單引號
在PHP中還提供了htmlentities()函數,可以將所有的非ASCII碼字元轉換為對應的實體代碼。該函數與htmlspecialchars()函數的使用文法格式一致,該函數可以轉義更多的HTML字元。下面的代碼為htmlentities()函數的使用範例:
複製代碼 代碼如下:
<?php
$str = "一個'quote'是bold";
//輸出&0qrave;»¸ö 'quote' ÊÇ <:b>bold
echo htmlentities($str);
//輸出:一個'quote' 是 bold
echo htmlentities($str,ENT_QUOTES,gb2312);
?>
在處理表單中提交的資料時,不僅要通過前面介紹的函數將HTML的標記符號和一些特殊字元轉換為HTML實體,還需要對引號進行處理。因為被提交的表單資料中的“'”、“””和“\”等字元前將自動加上一個斜線“\”。這是由於PHP設定檔php.ini中的選項magic_quotes_gpc在起作用,預設是開啟的,如果不關閉它則要使用函數stripslashes()刪除反斜線。如果不處理,將資料儲存到資料庫中時,有可能會被資料庫誤當成控制符號而引起錯誤。函數stripslashes()只有一個被處理字串作為參數,返回處理後的字串。通常使用htmlspecialchars()函數與stripslashes()函數複合的方式,聯合處理表單中提交的資料。
函數stripslashes()的功能是去掉反斜線“\”,如果有連續兩個反斜線,則只去掉一個。與之對應的是另一個函數addslashes(),正如函數名所暗示的,它將在“'”、“””、“\”和NULL字元等前增加必要的反斜線。
函數htmlspecialchars()是將函數HTML中的標記符號轉換為對應的HTML實體,有時直接刪除使用者輸入的HTML標籤,也是非常有必要的。PHP中提供的strip_tags()函數預設就可以刪除字串中所有的HTML標籤,也可以有選擇性地刪除一些HTML標記。如布告欄或是訪客留言板,有這方面的應用是相當必要的。例如使用者在論壇中發布文章時,可以預留一些可以改變字型大小、顏色、粗體和斜體等的HTML標記,而刪除一些對頁面配置有影響的HTML標記。函數strip_tags()的原型如下所示:
複製代碼 代碼如下:
string strip_tags(string str[,string allowable_tags]); //刪除HTML的標籤函數
該函數有兩個參數,第一個參數提供了要處理的字串,第二個參數是一個可選的HTML標籤列表,放入該列表中的HTML標籤將被保留,其他的則全部被刪除。預設將所有HTML標籤都刪除。下面的程式為該函數的使用範圍,如下所示:
複製代碼 代碼如下:
<?php
$str = "Linux Apache Mysql PHP";
echo strip_tags($str); //刪除了全部HTML標籤,輸出:Linux Apache Mysql PHP
echo strip_tags($str,""); //輸出LinuxApache Mysql PHP
echo strip_tags($str,""); //輸出Linux Apache Mysql PHP
?>
四、其他字串格式化函數
字串的格式化處理函數還有很多,只要是想得到所需要格式化的字串,都可以調用PHP中提供的系統函數處理,很少需要自己定義字串格式化函數。
①函數strrev()
該函數的作用是將輸入的字串反轉,只提供一個要處理的字串作為參數,返回翻轉後的字串。如下所示:
複製代碼 代碼如下:
<?php
echo strrev("http://www.lampbrother.net"); //反轉後輸出:ten.rehtorbpmal.www//:ptth
?>
②函數number_format()
number_format()函數通過千位分組來格式化數字。該函數如下所示:
複製代碼 代碼如下:
string number_format(float number[,int decimals[,string dec_point,string thousands_sep]])
複製代碼 代碼如下:
<?php
$number = 123456789;
echo number_format($number); //輸出:123,456,789千位分隔的字串
echo number_format($number,2); //輸出:123,456,789.00小數點後保留兩位小數
echo number_format($number,2,",","."); //輸出123.456.789,00千位使用(.)分隔了,並保留兩位小數
?>
③函數md5()
隨著互連網的普及,駭客攻擊已成為網路管理者的心病。有統計資料表明70%的攻擊來自內部,因此必須採取相應的防範措施來扼制系統內部的攻擊。防止內部攻擊的重要性還在於內部人員對資料的儲存位置、資訊重要性非常瞭解,這使得內部攻擊更容易奏效。攻擊者盜用合法使用者的身份資訊,以仿冒的身份與他人進行通訊。所以在使用者註冊時應該先將密碼加密後再添加到資料庫中,這樣就可以防止內部攻擊者直接查詢資料庫中的授權表,盜用合法使用者的身份資訊。
md5()函數的作用就是將一個字串進行MD5演算法加密,預設返回一個32位的十六進位字串。
複製代碼 代碼如下:
<?php
$password = "lampbrother";
echo md5($password)."
";
//將輸入的密碼和資料庫儲存的匹配
if(md5($password) == '5f1ba7d4b4bf96fb8e7ae52fc6297aee'){
echo "密碼一致,登入成功";
}
?>
在PHP中提供了一個對檔案進行MD5加密的函數md5_file(),使用的方式和md5()函數相似。
http://www.bkjia.com/PHPjc/914060.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/914060.htmlTechArticlePHP中常用的字串格式化函數總結,php函數 字串的格式化就是將字串處理為某種特定的格式。通常使用者從表單中提交給伺服器的資料都...