網(wǎng)站設(shè)計(jì)對于字符串處理的解決方法,字符串處理的在Web編程中,字符串總是被大量地生成和處理。例如,獲取字符串的長度、提取字符串中指定位置的字符等。正確地使用和處理字符串,對于PHP開發(fā)者來說越來越重要。本欄目從最簡單的字符串定義一直引導(dǎo)我們網(wǎng)站開發(fā)者到高層字符串處理技巧,深圳網(wǎng)站設(shè)計(jì)公司希望各位通過學(xué)習(xí),了解和掌握PHP字符串,達(dá)到舉一反三的目的,為了解和學(xué)習(xí)其他的字符串處理技巧打好基礎(chǔ)。
網(wǎng)站設(shè)計(jì)時(shí)關(guān)于格式化
字符串通常,在使用用戶輸入的字符串(通常來自HTML表單界面)之前,必須對它們進(jìn)行整理。整理字符串的第一步是清理字符串中多余的空格。雖然這一步操作不是必需的,但如果要將字符串存入一個(gè)文件或數(shù)據(jù)庫中,或者將它和別的字符串進(jìn)行比較,這就是非常有用的。為了實(shí)現(xiàn)該功能,PHP提供了3個(gè)非常有用的函數(shù)。在腳本的開始處,當(dāng)給表單輸入變量定義簡短變量名稱時(shí),可以使用trim()函數(shù)來整理用戶輸入的數(shù)據(jù),如下所示:
$name=trim($name);
$email=trim($email);
$feedback=trim($feedback);
trim()函數(shù)可以除去字符串開始位置和結(jié)束位置的空格,并將結(jié)果字符串返回。默認(rèn)情況下,除去的字符是換行符和回車符(\n和\r)、水平和垂直制表符(\t和\v)、字符串結(jié)束符(\0)和空格。除了這個(gè)默認(rèn)的過濾字符列表外,也可以在該函數(shù)的第二個(gè)參數(shù)中提供要過濾的特殊字符。根據(jù)特定用途,可能會(huì)希望使用ltrim()函數(shù)或rtrim()函數(shù)。這兩個(gè)函數(shù)的功能都類似于trim()函數(shù),它們都以需要處理的字符串作為輸入?yún)?shù),然后返回經(jīng)過格式化的字符串。這3個(gè)函數(shù)的不同之處在于trim()將除去整個(gè)字符串前后的空格,而ltrim()只從字符串的開始處(左邊)除去空格,rtrim()只從字符串的結(jié)束處(右邊)除去空格。PHP具有一系列可供使用的函數(shù)來重新格式化字符串,這些函數(shù)的工作方式是各不相同的。
★ HTML格式化nl2br()函數(shù)將字符串作為輸入?yún)?shù),用HTML中的<br/>標(biāo)記代替字符串中的換行符。這對于將一個(gè)長字符串顯示在瀏覽器中是非常有用的。例如,使用這個(gè)函數(shù)來格式化顧客反饋信息并將它返回到瀏覽器中:
<p><?phpechonl2br($text);?></p>
提示:HTML將忽略純空格,所以如果不使用nl2br()函數(shù)來過濾這個(gè)輸出結(jié)果,那么它看上去就是單獨(dú)的一行。
★ 打印格式化常用echo命令將字符串輸出到瀏覽器。PHP也支持print()函數(shù),它實(shí)現(xiàn)的功能與echo命令相同,但具有返回值,總是返回1。使用函數(shù)printf()和sprintf(),還可以實(shí)現(xiàn)一些更復(fù)雜的格式。它們的工作方式基本相同,只是printf()函數(shù)是將一個(gè)格式化的字符串輸出到瀏覽器中,而sprintf()函數(shù)是返回一個(gè)格式化了的字符串。這兩個(gè)函數(shù)的基本語法如下:stringsprintf(stringformat[,mixedargs...])
intprintf(stringformat[,mixedargs...])
傳遞給這兩個(gè)函數(shù)的第一個(gè)參數(shù)都是字符串格式,它們使用格式代碼而不是變量來描述輸出字符串的基本形狀。其他參數(shù)是用來替換格式字符串的變量。
【示例】在使用echo時(shí),把要用的變量直接打印至該行中,如下所示:
echo"總訂單數(shù)量是:$total.";
要使用printf()函數(shù)得到相同的結(jié)果,應(yīng)該使用如下語句:
printf("總訂單數(shù)量是:%s.",$total);
格式化字符串中的%s是轉(zhuǎn)換說明。它的意思是用一個(gè)字符串來代替。在這個(gè)例子中,它會(huì)被已解釋成字符串的$total代替。如果保存在$total變量中的值是12.4,這兩種方法都將它打印為12.4。printf()函數(shù)的優(yōu)點(diǎn)在于它可以使用更有用的轉(zhuǎn)換說明來指定$total為一個(gè)浮點(diǎn)數(shù),它的小數(shù)點(diǎn)后面應(yīng)該有兩位小數(shù),如下所示:
printf("總訂單數(shù)量是:%.2f",$total);
經(jīng)過這行代碼的格式化處理,存儲(chǔ)在$total中的12.4將打印為12.40??梢栽诟袷交址惺褂枚鄠€(gè)轉(zhuǎn)換說明。如果有n個(gè)轉(zhuǎn)換說明,在格式化字符串后面就應(yīng)該帶有n個(gè)參數(shù)。每個(gè)轉(zhuǎn)換說明都將按給出的順序被一個(gè)重新格式化過的參數(shù)代替。
printf("總訂單數(shù)量是:%.2f(含運(yùn)費(fèi)%.2f)",$total,$total_shipping);
在這里,第一個(gè)轉(zhuǎn)換說明將使用變量$total,而第二個(gè)轉(zhuǎn)換說明將使用變量$total_shipping。每一個(gè)轉(zhuǎn)換說明都遵循同樣的格式,如下所示:
%['padding_character][-][width][.precision]type
所有轉(zhuǎn)換說明都以%開始。如果想打印一個(gè)“%”符號,必須使用“%%”。參數(shù)padding_character是可選的。它將被用來填充變量直至所指定的寬度。該參數(shù)的作用就像使用計(jì)算器那樣在數(shù)字前面加零。默認(rèn)的填充字符是一個(gè)空格,如果指定了一個(gè)空格或0,就不需要使用“'”作為前綴。對于任何其他填充字符,必須指定“'”作為前綴。字符“-”是可選的。它指明該域中的數(shù)據(jù)應(yīng)該左對齊,而不是默認(rèn)的右對齊。參數(shù)width告訴printf()函數(shù)在這里為將被替換的變量留下多少空間(按字符計(jì)算)。參數(shù)precision表示必須是以一個(gè)小數(shù)點(diǎn)開始。它指明了小數(shù)點(diǎn)后面要顯示的位數(shù)。轉(zhuǎn)換說明的最后一部分是一個(gè)類型碼。其支持的所有類型碼如表18.2所示。
表18.2 轉(zhuǎn)換說明的類型碼當(dāng)在類型轉(zhuǎn)換代碼中使用printf()函數(shù)時(shí),參數(shù)的順序并不一定要與轉(zhuǎn)換說明中的順序相同。
★ 字符串大小寫可以重新格式化字符串中的字母大小寫。例如,如果電子郵件中的主題行字符串是以$subject開始,可以通過幾個(gè)函數(shù)來改變它的大小寫。這些函數(shù)的功能概要如表18.3所示。該表的第一列顯示了函數(shù)名,第二列描述了它的功能,第三列顯示了如何在字符串$subject中使用它,最后一列顯示了該函數(shù)的返回值。
表18.3 字符串大小寫函數(shù)和它們的效果除了使用字符串函數(shù)來重新格式化一個(gè)可見的字符串之外,也可以使用其中的一些函數(shù)來重新格式化字符串,以便將其存入數(shù)據(jù)庫。對于字符串來說,某些字符肯定是有效的,但是當(dāng)將數(shù)據(jù)插入到數(shù)據(jù)庫中時(shí)可能會(huì)引起一些問題,因?yàn)閿?shù)據(jù)庫會(huì)將這些字符解釋成控制符。這些有問題的字符就是引號(單引和雙引)、反斜杠(\)和NULL字符。需要找到一種標(biāo)記或是轉(zhuǎn)義它們的辦法。以便使像MySQL這樣的數(shù)據(jù)庫能夠理解所表示的是有實(shí)際意義的特殊文本字符,而不是控制序列。為了將這些字符進(jìn)行轉(zhuǎn)義處理,可以在它們前面加一個(gè)反斜杠。例如,"(雙引號)就變成\"(反斜杠雙引號),\(反斜杠)就變成\\(反斜杠反斜杠)。這個(gè)規(guī)則對所有特殊字符都通用,所以如果在字符串中存在\\字符,就需要用\\\進(jìn)行替換。
PHP提供了兩個(gè)專門用于轉(zhuǎn)義字符串的函數(shù)。在將任何字符串寫到數(shù)據(jù)庫之前,如果PHP的默認(rèn)配置還沒有啟用該功能,讀者應(yīng)該使用addSlashes()函數(shù)將它們重新格式化,例如:$feedback=addSlashes($feedback);與許多其他字符串函數(shù)一樣,addSlashes()函數(shù)需要一個(gè)字符串作為輸入?yún)?shù),經(jīng)過該函數(shù)處理,將返回一個(gè)重新格式化后的字符串。如果設(shè)置了PHP的配置參數(shù)magic_quotes_gpc,則PHP將自動(dòng)添加或去除反斜杠。
在PHP新版本的默認(rèn)安裝情況下,該指令是啟用的。gpc表示GET、POST和cookie,是第一個(gè)字母的組合。這就意味著,來自這些方法或方式的變量將被自動(dòng)包括在引號內(nèi)。使用get_magic_quotes_gpc()函數(shù),可以檢查系統(tǒng)上的這個(gè)指令是否已經(jīng)啟用,如果來自這些方法的變量被自動(dòng)引用在引號中,該函數(shù)將返回true。如果系統(tǒng)上該指令為啟用的,在顯示用戶數(shù)據(jù)之前,必須調(diào)用stripslashes()函數(shù);否則,這些反斜杠會(huì)被顯示出來。好了,網(wǎng)站設(shè)計(jì)公司本文關(guān)于“網(wǎng)站設(shè)計(jì)怎樣處理好代碼字符串的解決方法”的知識分享就到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。