在做網站中,通常,在使用用戶輸入的字符串(通常來自HTML表單界面)之前,必須對它們進行整理。整理字符串的第一步是清理字符串中多余的空格。雖然這一步操作不是必需的,但如果要將字符串存入一個文件或數據庫中,或者將它和別的字符串進行比較,這就是非常有用的。為了實現該功能,PHP提供了3個非常有用的函數。在腳本的開始處,當給表單輸入變量定義簡短變量名稱時,可以使用trim()函數來整理用戶輸入的數據,如下所示:
$name=trim($name);
$email=trim($email);
$feedback=trim($feedback);
trim()函數可以除去字符串開始位置和結束位置的空格,并將結果字符串返回。默認情況下,除去的字符是換行符和回車符(\n和\r)、水平和垂直制表符(\t和\v)、字符串結束符(\0)和空格。除了這個默認的過濾字符列表外,也可以在該函數的第二個參數中提供要過濾的特殊字符。根據特定用途,可能會希望使用ltrim()函數或rtrim()函數。
這兩個函數的功能都類似于trim()函數,它們都以需要處理的字符串作為輸入參數,然后返回經過格式化的字符串。這3個函數的不同之處在于trim()將除去整個字符串前后的空格,而ltrim()只從字符串的開始處(左邊)除去空格,rtrim()只從字符串的結束處(右邊)除去空格。PHP具有一系列可供使用的函數來重新格式化字符串,這些函數的工作方式是各不相同的。
?HTML格式化
nl2br()函數將字符串作為輸入參數,用HTML中的<br/>標記代替字符串中的換行符。這對于將一個長字符串顯示在瀏覽器中是非常有用的。例如,使用這個函數來格式化顧客反饋信息并將它返回到瀏覽器中:<p><? php echo nl2br($text); ?> </p>
提示:HTML將忽略純空格,所以如果不使用nl2br()函數來過濾這個輸出結果,那么它看上去就是單獨的一行。
?打印格式化
常用echo命令將字符串輸出到瀏覽器。PHP也支持print()函數,它實現的功能與echo命令相同,但具有返回值,總是返回1。
使用函數printf()和sprintf(),還可以實現一些更復雜的格式。它們的工作方式基本相同,只是printf()函數是將一個格式化的字符串輸出到瀏覽器中,而sprintf()函數是返回一個格式化了的字符串。
個函數的基本語法如下:
string sprintf (string format [, mixed args...])int printf (string format [, mixed args...])
傳遞給這兩個函數的第一個參數都是字符串格式,它們使用格式代碼而不是變量來描述輸出字符串的基本形狀。其他參數是用來替換格式字符串的變量。
【示例】在使用echo時,把要用的變量直接打印至該行中,如下所示:echo "總訂單數量是:$total.";
要使用printf()函數得到相同的結果,應該使用如下語句:printf ("總訂單數量是:%s.", $total);
格式化字符串中的%s是轉換說明。它的意思是用一個字符串來代替。在這個例子中,它會被已解釋成字符串的$total代替。如果保存在$total變量中的值是12.4,這兩種方法都將它打印為12.4。
printf()函數的優(yōu)點在于它可以使用更有用的轉換說明來指定$total為一個浮點數,它的小數點后面應該有兩位小數,如下所示:
printf ("總訂單數量是:%.2f", $total);
經過這行代碼的格式化處理,存儲在$total中的12.4將打印為12.40。
可以在格式化字符串中使用多個轉換說明。如果有n個轉換說明,在格式化字符串后面就應該帶有n個參數。每個轉換說明都將按給出的順序被一個重新格式化過的參數代替。
printf ("總訂單數量是:%.2f (含運費%.2f) ",$total, $total-shipping);
在這里,第一個轉換說明將使用變量$total,而第二個轉換說明將使用變量$total_shipping。每一個轉換說明都遵循同樣的格式,如下所示:
%['padding-character][-][width]
[.precision]type
所有轉換說明都以%開始。如果想打印一個“%”符號,必須使用“%%”。參數padding_character是可選的。它將被用來填充變量直至所指定的寬度。該參數的作用就像使用計算器那樣在數字前面加零。默認的填充字符是一個空格,如果指定了一個空格或0,就不需要使用“'”作為前綴。對于任何其他填充字符,必須指定“'”作為前綴。字符“-”是可選的。它指明該域中的數據應該左對齊,而不是默認的右對齊。參數width告訴printf()函數在這里為將被替換的變量留下多少空間(按字符計算)。
參數precision表示必須是以一個小數點開始。它指明了小數點后面要顯示的位數。
轉換說明的最后一部分是一個類型碼。其支持的所有類型碼如下表所示。
當在類型轉換代碼中使用printf()函數時,參數的順序并不一定要與轉換說明中的順序相同。
?字符串大小寫
可以重新格式化字符串中的字母大小寫。例如,如果電子郵件中的主題行字符串是以$subject開始,可以通過幾個函數來改變它的大小寫。這些函數的功能概要如下表所示。該表的第一列顯示了函數名,第二列描述了它的功能,第三列顯示了如何在字符串$subject中使用它,最后一列顯示了該函數的返回值。
除了使用字符串函數來重新格式化一個可見的字符串之外,也可以使用其中的一些函數來重新格式化字符串,以便將其存入數據庫。對于字符串來說,某些字符肯定是有效的,但是當將數據插入到數據庫中時可能會引起一些問題,因為數據庫會將這些字符解釋成控制符。這些有問題的字符就是引號(單引和雙引)、反斜杠(\)和NULL字符。
需要找到一種標記或是轉義它們的辦法。以便使像MySQL這樣的數據庫能夠理解所表示的是有實際意義的特殊文本字符,而不是控制序列。為了將這些字符進行轉義處理,可以在它們前面加一個反斜杠。例如,"(雙引號)就變成\"(反斜杠雙引號),\(反斜杠)就變成\\(反斜杠反斜杠)。這個規(guī)則對所有特殊字符都通用,所以如果在字符串中存在\\字符,就需要用\\\進行替換。PHP提供了兩個專門用于轉義字符串的函數。在將任何字符串寫到數據庫之前,如果PHP的默認配置還沒有啟用該功能,讀者應該使用addSlashes()函數將它們重新格式化,例如:$feedback = addSlashes($feedback);
與許多其他字符串函數一樣,addSlashes()函數需要一個字符串作為輸入參數,經過該函數處理,將返回一個重新格式化后的字符串。
如果設置了PHP的配置參數magic_quotes_gpc,則PHP將自動添加或去除反斜杠。在PHP新版本的默認安裝情況下,該指令是啟用的。gpc表示GET、POST和cookie,是第一個字母的組合。這就意味著,來自這些方法或方式的變量將被自動包括在引號內。使用get_magic_quotes_gpc()函數,可以檢查系統(tǒng)上的這個指令是否已經啟用,如果來自這些方法的變量被自動引用在引號中,該函數將返回true。如果系統(tǒng)上該指令為啟用的,在顯示用戶數據之前,必須調用stripslashes()函數;否則,這些反斜杠會被顯示出來。
當前文章標題:格式化字符串
當前URL:http://mnamateurbaseball.com/news/wzzz/3280.html
下一篇:連接和分割字符串