手中(zhōng)的PHP手冊不知(zhī)道具體(tǐ)是哪個版本的,隻知(zhī)道是PHP5.1的,有94個字符串處理函數,真的是有夠多,下(xià)面開(kāi)始按照從簡單到複雜(zá)的順序介紹這些函數的使用功能和使用方法:
先給出一(yī)個總表:
addcslashes — 爲字符串裏面的部分(fēn)字符添加反斜線轉義字符
addslashes — 用指定的方式對字符串裏面的字符進行轉義
bin2hex — 将二進制數據轉換成十六進制表示
chop — rtrim() 的别名函數
chr — 返回一(yī)個字符的ASCII碼
chunk_split — 按一(yī)定的字符長度将字符串分(fēn)割成小(xiǎo)塊
convert_cyr_string — 将斯拉夫語字符轉換爲别的字符
convert_uudecode — 解密一(yī)個字符串
convert_uuencode — 加密一(yī)個字符串
count_chars — 返回一(yī)個字符串裏面的字符使用信息
crc32 — 計算一(yī)個字符串的crc32多項式
crypt — 單向散列加密函數
echo — 用以顯示一(yī)些内容
explode — 将一(yī)個字符串用分(fēn)割符轉變爲一(yī)數組形式
fprintf — 按照要求對數據進行返回,并直接寫入文檔流
get_html_translation_table — 返回可以轉換的HTML實體(tǐ)
hebrev — 将Hebrew編碼的字符串轉換爲可視的文本
hebrevc — 将Hebrew編碼的字符串轉換爲可視的文本
html_entity_decode — htmlentities ()函數的反函數,将HTML實體(tǐ)轉換爲字符
htmlentities — 将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ)
htmlspecialchars_decode — htmlspecialchars()函數的反函數,将HTML實體(tǐ)轉換爲字符
htmlspecialchars — 将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ)
implode — 将數組用特定的分(fēn)割符轉變爲字符串
join — 将數組轉變爲字符串,implode()函數的别名
levenshtein — 計算兩個詞的差别大(dà)小(xiǎo)
localeconv — 獲取數字相關的格式定義
ltrim — 去(qù)除字符串左側的空白(bái)或者指定的字符
md5_file — 将一(yī)個文件進行MD5算法加密
md5 — 将一(yī)個字符串進行MD5算法加密
metaphone — 判斷一(yī)個字符串的發音規則
money_format — 按照參數對數字進行格式化的輸出
nl_langinfo — 查詢語言和本地信息
nl2br — 将字符串中(zhōng)的換行符“\n”替換成“<br />”
number_format — 按照參數對數字進行格式化的輸出
ord — 将一(yī)個ASCII碼轉換爲一(yī)個字符
parse_str — 把一(yī)定格式的字符串轉變爲變量和值
print — 用以輸出一(yī)個單獨的值
printf — 按照要求對數據進行顯示
quoted_printable_decode — 将一(yī)個字符串加密爲一(yī)個8位的二進制字符串
quotemeta — 對若幹個特定字符進行轉義
rtrim — 去(qù)除字符串右側的空白(bái)或者指定的字符
setlocale — 設置關于數字,日期等等的本地格式
sha1_file — 将一(yī)個文件進行SHA1算法加密
sha1 — 将一(yī)個字符串進行SHA1算法加密
similar_text — 比較兩個字符串,返回系統認爲的相似字符個數
soundex — 判斷一(yī)個字符串的發音規則
sprintf — 按照要求對數據進行返回,但是不輸出
sscanf — 可以對字符串進行格式化
str_ireplace — 像str_replace()函數一(yī)樣匹配和替換字符串,但是不區分(fēn)大(dà)小(xiǎo)寫
str_pad — 對字符串進行兩側的補白(bái)
str_repeat — 對字符串進行重複組合
str_replace — 匹配和替換字符串
str_rot13 — 将字符串進行ROT13加密處理
str_shuffle — 對一(yī)個字符串裏面的字符進行随機排序
str_split — 将一(yī)個字符串按照字符間距分(fēn)割爲一(yī)個數組
str_word_count — 獲取字符串裏面的英文單詞信息
strcasecmp — 對字符串進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strchr — 通過比較返回一(yī)個字符串的部分(fēn)strstr()函數的别名
strcmp — 對字符串進行大(dà)小(xiǎo)比較
strcoll – 根據本地設置對字符串進行大(dà)小(xiǎo)比較
strcspn — 返回字符連續非匹配長度的值
strip_tags — 去(qù)除一(yī)個字符串裏面的HTML和PHP代碼
stripcslashes — 反轉義addcslashes()函數轉義處理過的字符串
stripos — 查找并返回首個匹配項的位置,匹配不區分(fēn)大(dà)小(xiǎo)寫
stripslashes — 反轉義addslashes()函數轉義處理過的字符串
stristr — 通過比較返回一(yī)個字符串的部分(fēn),比較時不區分(fēn)大(dà)小(xiǎo)寫
strlen — 獲取一(yī)個字符串的編碼長度
strnatcasecmp — 使用自然排序法對字符串進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strnatcmp — 使用自然排序法對字符串進行大(dà)小(xiǎo)比較
strncasecmp — 對字符串的前N個字符進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strncmp — 對字符串的前N個字符進行大(dà)小(xiǎo)比較
strpbrk — 通過比較返回一(yī)個字符串的部分(fēn)
strpos — 查找并返回首個匹配項的位置
strrchr — 通過從後往前比較返回一(yī)個字符串的部分(fēn)
strrev — 将字符串裏面的所有字母反向排列
strripos — 從後往前查找并返回首個匹配項的位置,匹配不區分(fēn)大(dà)小(xiǎo)寫
strrpos – 從後往前查找并返回首個匹配項的位置
strspn — 匹配并返回字符連續出現長度的值
strstr — 通過比較返回一(yī)個字符串的部分(fēn)
strtok — 用指定的若幹個字符來分(fēn)割字符串
strtolower — 将字符串轉變爲小(xiǎo)寫
strtoupper –将字符串轉變爲大(dà)寫
strtr — 對字符串比較替換
substr_compare — 對字符串進行截取後的比較
substr_count — 計算字符串中(zhōng)某字符段的出現次數
substr_replace — 對字符串中(zhōng)的部分(fēn)字符進行替換
substr — 對字符串進行截取
trim — 去(qù)除字符串兩邊的空白(bái)或者指定的字符
ucfirst — 将所給字符串的第一(yī)個字母轉換爲大(dà)寫
ucwords — 将所給字符串的每一(yī)個英文單詞的第一(yī)個字母變成大(dà)寫
vfprintf — 按照要求對數據進行返回,并直接寫入文檔流
vprintf — 按照要求對數據進行顯示
vsprintf — 按照要求對數據進行返回,但是不輸出
wordwrap — 按照一(yī)定的字符長度分(fēn)割字符串
strtolower()函數把所有字符變成小(xiǎo)寫,strtoupper()函數把所有字符變成大(dà)寫,ucfirst()函數将所給字符串的第一(yī)個字母轉換爲大(dà)寫,ucwords()函數将所給字符串的每一(yī)個英文單詞的第一(yī)個字母變成大(dà)寫。
ucfirst()隻處理字符串的首個字符,ucwords()隻處理每個單詞的首字母(以空格來界定是否是單詞,“today!Hi”、“today.Hi” 會被認爲是一(yī)個單詞),對于其餘字母的大(dà)小(xiǎo)寫狀态并不改變。
[php]<?php
echo strtolower("ABCD");//顯示 abcd
echo strtoupper("abcd");//顯示 ABCD
echo ucfirst("what a beautiful day today!");//顯示 What a beautiful day today!
echo ucwords("what a beautiful day today!");//顯示 What A Beautiful Day Today!
?>[/php]
trim()函數去(qù)除字符串兩邊的空白(bái)或者指定的字符,ltrim()函數去(qù)除字符串左側的空白(bái)或者指定的字符,rtrim()函數去(qù)除字符串右側的空白(bái)或者指定的字符,chop()函數和rtrim()函數功能相同,這四個函數都不支持UFT-8中(zhōng)文字符。
[php]<?php
echo trim("what a beautiful day today!","! adlotwy");//顯示 hat a beautifu
echo ltrim("what a beautiful day today!","! adlotwy");//顯示 hat a beautiful day today!
echo rtrim("what a beautiful day today!","! adlotwy");//顯示 what a beautifu
echo chop("what a beautiful day today!","! adlotwy");//顯示 what a beautifu
?>[/php]
echo()函數用以顯示一(yī)些内容,可以使用<<《What is the difference between echo and print》 查看兩者的差别。echo() 和 print()後面的小(xiǎo)括号,可加可不加。
[php]<?php
$temp = "都";
echo $temp;//顯示“都”
echo <<<END
大(dà)
家
$temp
好
嗎(ma)
?
END;//顯示“大(dà)家都好嗎(ma)?”
echo "大(dà)家",$temp,"好!";//顯示“大(dà)家都好”
$temp = "都";
print $temp; //顯示“都”
print <<<END
大(dà)
家
$temp
好
嗎(ma)
?
END;//顯示“大(dà)家都好嗎(ma)?”
?>[/php]
printf()函數可以按照要求對數據進行顯示,該函數的功能異常強大(dà),即可以讓值在不同的字符格式和進制之間轉換,還可以實現字符補白(bái)(pad)和截取等功能。sprintf()函數,fprintf()函數的功能和printf()函數完全一(yī)樣,隻不過sprintf()函數是返回結果而不是直接輸出,fprintf()必須用在将輸出寫入文檔流的時候。下(xià)面僅以printf()函數舉例:
在printf()函數的第一(yī)個參數中(zhōng):
% - 轉義字符(在%開(kāi)始,字母結束的格式定義内部,使用“’”進行轉義)
b – 二進制格式輸出
c - 将ASCII值轉變爲對應的值輸出
d – 有符号的十進制數輸出(整數)
e – 科學計數法輸出
u – 無符号的十進制數輸出(正數)
f – 浮點格式輸出(locale aware)
F – 浮點格式輸出(non-locale aware)
o – 八進制格式輸出
s – 字符串格時輸出
x – 十六進制格式輸出(字母小(xiǎo)寫)
X - 十六進制格式輸出(字母大(dà)寫)
[php]<?php
$n = 43951789;
$u = -43951789;
$c = 65; // 'A'的ASCII值爲65
printf("%b", $n); //顯示10100111101010011010101101
printf("%c", $c); //顯示A
printf("%d", $n); //顯示43951789
printf("%e", $n); //顯示4.39518e+7
printf("%u", $n); //顯示43951789
printf("%u", $u); //顯示4251015507
printf("%f", $n); //顯示43951789.000000
printf("%F", $n); //顯示43951789.000000
printf("%o", $n); //顯示247523255
printf("%s", $n); //顯示43951789
printf("%x", $n); //顯示29ea6ad
printf("%X", $n); //顯示29EA6AD
printf("%+d", $n); //顯示+43951789
printf("%+d", $u); //顯示-43951789
?>[/php]
printf的第一(yī)個參數還内置了類似正則的功能:
1、第一(yī)位是可選的一(yī)個“+”,這個符号隻對數字格式的輸出有效,因爲如果是負數的話(huà),前面會有一(yī)個“-”,有時候會需要在正數前面加一(yī)個“+”,但是PHP默認是隐去(qù)“+”号顯示的,所以需要在前面加一(yī)個“+”輸出“+”号
2、第二位是可選的填充字符,用這個字符來起到填充空白(bái)的左右,功能類似str_pad()函數,保留字符可以用“’”轉義
3、第三位表示填充的方向,是可選的,“+”是默認值,表示在左側填充,“-”表示在右側填充
4、第四位表示填充完成後的長度,也是可選的,沒有這個參數就表示不進行填充
5、第五位可選參數,如果輸出是浮點數,可以控制小(xiǎo)數點後面的個數,如果是輸出字符串,則可以用來截取字符串的長度,使用時爲了和前面的參數區分(fēn),需要用“.”隔開(kāi)
[php]<?php
$t = 'many monkeys';
$n = 1213;
printf("%+d",$n); // 1、顯示 +1213
printf("%010d",$n); // 2、顯示000001213
printf("%+'#10d",$n); // 2、顯示 #####+1213
printf("%+'#-10d",$n); // 3、顯示 +1213#####
printf("%.2f",$n); // 5、顯示 1213.00
printf("%.7s",$t); // 5、顯示 many mo
?>[/php]
了解了上面這些之後,讓我(wǒ)(wǒ)們看printf()函數的使用方法,其實就是将接受的從第二個參數以後的所有參數一(yī)個一(yī)個的在第一(yī)個參數中(zhōng)需要轉換的地方輸出,如果參數次序被打亂,就需要使用“2\$”這樣的字符來表明變量的位置。
[php]<?php
$num = "tree";
$location = 10;
$format1 = "The %s contains %d monkeys";
printf($format1, $num, $location);
//顯示 The tree contains 10 monkeys
$format2 = "The %s contains %d monkeys";
printf($format2, $location, $num);
//顯示 The tree contains 10 monkeys
?>[/php]
vprintf()函數、vsprintf()函數、vfprintf()函數三個函數的功能和上面的printf()函數、sprintf()函數、fprintf()的功能一(yī)樣,vprintf()函數直接輸出,vsprintf()函數返回但是不輸出,vfprintf()函數直接将結果輸出到文檔流,區别就是這三個函數接受的參數都是數組形式的,而不是一(yī)個一(yī)個的變量。
這裏隻舉vprintf()函數的例子:
[php]<?php
$num = "tree";
$location = 10;
$argu1 = array("tree",10);
$argu2 = array(10,"tree");
$format1 = "The %s contains %d monkeys";
printf($format1, $num, $location);
// 顯示 The tree contains 10 monkeys
$format1 = "The %s contains %d monkeys";
vprintf($format1, $argu1);
// 顯示 The tree contains 10 monkeys
$format2 = "The %2\$s contains %1\$d monkeys";
vprintf($format2, $argu2);
// 顯示 The tree contains 10 monkeys
?>[/php]
number_format()函數可以按照參數對數字進行格式化的輸出,number_format()函數最多有4個參數,第一(yī)個參數是輸出的數字,第二個參數表示保留幾位小(xiǎo)數,第三個參數和第四個參數必須同時使用(就是說不能隻用第三個參數,而不使用第四個參數),分(fēn)别表示小(xiǎo)數點的樣式和千分(fēn)符的樣式,默認分(fēn)别爲“.”和“,”。
[php]<?php
$num = 1234.56;
$new_num = number_format($num, 3, ".", "-");
echo $new_num; // 顯示 1-234.560
?>[/php]
money_format()函數需要C裏面的strfmon()函數支持,所以需要系統能夠提供C函數庫,很顯然,windows系統無法支持此功能,所以在windows下(xià)面的PHP環境不支持money_format()函數,此函數的介紹以後再補充:(
sscanf()函數可以對字符串進行格式化,第一(yī)個參數表示需要處理的字符,第二個參數表示變量匹配的規則(匹配規則請參照上面的printf()函數),後面的參數可選,分(fēn)别對應需要賦值的變量,如果僅僅隻有2個參數,那麽所有的變量值将以一(yī)個數組的形式返回。在下(xià)面的例子中(zhōng),“%s”的匹配是貪婪的,所以在使用時要注意。
[php]<?php
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "$year-" .$month. "-$day";// 顯示 2000-January-1
?>[/php]
str_replace()函數可以匹配和替換字符串,第一(yī)個參數表示需要匹配的項,第二個參數表示替換的項,第三個參數表示處理的字符串。第四個參數可選,将一(yī)個變量賦值爲匹配的次數,前兩個參數也可以是數組形式的。str_ireplace()函數的功能和str_replace()函數類似,隻不過在匹配的時候str_ireplace()函數會忽略大(dà)小(xiǎo)寫。
[php]<?php
$str1 = str_replace("world", "body", "hello world world");
echo $str1;// 顯示 hello body body
$str1 = str_ireplace("WORLD", "body", "hello world world");
echo $str1;// 顯示 hello body body
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase, $count);
echo $newphrase;// 顯示 You should eat pizza, beer, and ice cream every day.
echo $count; // 顯示 3
?>[/php]
strtr()函數的作用是對字符串替換,strtr()函數有兩種使用方法,第一(yī)種使用三個參數,替換時會将第二個參數的字符串替換爲第三個參數的字符串(如果兩個字符串參數的長度不一(yī)緻,則教長的那個字符串将會被截斷),第二種方法使用兩個參數,第二個參數是一(yī)個準備進行替換處理的數組。
[php]<?php
$trans = strtr("hello world", "world", "body");
echo $trans;//顯示 heyyo bodyd (w=>b,o=>o,r=>d,l=>y)
$arr = array("hello" => "hi", "hi" => "hello");
$trans = strtr("hi all, I said hello", $arr);
echo $trans;//顯示 hello all, I said hi
?>[/php]
strstr()函數通過比較返回一(yī)個字符串的部分(fēn)。函數有兩個參數,第一(yī)個參數表示處理的字符串,第二個參數表示匹配項,返回結果爲從匹配位置開(kāi)始到最後的一(yī)個字符串,如果沒有匹配,則返回false。strchr()函數是strstr()函數的别名,功能和使用方法完全一(yī)樣。strrchr()函數的功能和strstr()函數類似,區别是strrchr()函數是從後向前匹配的,stristr()函數的功能和strstr()函數一(yī)樣,但是匹配是不區分(fēn)字母的大(dà)小(xiǎo)寫。strpbrk()的功能和strstr()函數類似,是在一(yī)個字母串裏面找出第一(yī)個匹配項,返回以後的結果。
[php]<?php
$email = [email=]'user@example.com'[/email];
$domain = strstr($email, [email=]'@'[/email]);
echo $domain; // 顯示 @example.com
$exam = strrchr($email, 'e');
echo $exam; // 顯示 e.com
$exam = stristr($email, 'EX');
echo $exam; // 顯示 example.com
$exam = strpbrk($email, 'pe');
echo $exam; // 顯示 er@example.com
?>[/php]
strpos()函數查找并返回首個匹配項的位置,第一(yī)個參數表示處理的字符串,第二個參數表示匹配項,第三個參數可選,表示開(kāi)始執行查找的位置。stripos()函數的功能和strpos()函數類似,區别是匹配的時候不會區分(fēn)大(dà)小(xiǎo)寫。strrpos()函數和strpos()函數功能類似,區别是從後往前匹配,strripos()函數的功能和strrpos()函數類似,區别是不區分(fēn)大(dà)小(xiǎo)寫。strrpos()函數在PHP4中(zhōng)隻支持單個字母的查找,如果參數是字符串,則截取第一(yī)個字母,PHP4不支持strripos()函數。
[php]<?php
$newstring = 'abcdef abcdefab';
$pos = strpos($newstring, 'a', 1);
echo $pos; // 顯示 7
$pos = strrpos($newstring, 'ab', 6);
echo $pos; // 顯示 13
?>[/php]
count_chars()函數的作用是返回一(yī)個字符串裏面的字符使用信息。第二個參數五個參數:
0 - 以所有的每個字節值作爲鍵名,出現次數作爲值的數組。
1 - 與 0 相同,但隻列出出現次數大(dà)于零的字節值。
2 - 與 0 相同,但隻列出出現次數等于零的字節值。
3 - 返回由所有使用了的字節值組成的字符串。
4 - 返回由所有未使用的字節值組成的字符串。
[php]<?php
$data = "this is a test world";
print_r(count_chars($data, 1)); // 顯示用到字符信息
print_r(count_chars($data, 3)); // 顯示 adehilorstw
?>[/php]
strspn()函數的作用是匹配并返回第二個參數裏面的單字符連續出現長度的值,strspn()函數的第三個參數和第四個參數可選,分(fēn)别表示開(kāi)始匹配的位置和返回的最大(dà)值。strcspn()函數的使用方法和strspn()函數類似,但功能卻相反,返回的是第二個參數中(zhōng)不匹配的字符串長度。
[php]<?php
$var = strspn("42123 is the answer", "1234567890");
echo $var; //顯示 5
echo strspn("faoaaol", "oa", 1, 3); // 顯示 3
echo strcspn("csdcsdfaoaaol", "oa", 1, 9); // 顯示 6
?>[/php]
substr()函數可以對字符串進行截取,substr()函數可以有三個參數,第二個參數如果是空,那麽默認就爲0,如果我(wǒ)(wǒ)負數,就表示從後往前計數,第三個參數如果是正數,表示字符串截取的長度,如果省略,則會一(yī)直截取到最後,如果是負數,則表示從後往前截取到的位置。
[php]<?php
echo substr('abcdef',3, 2); // 顯示 de
echo substr('abcdef',"", 2); // 顯示 ab
echo substr("abcdef", -2); // 顯示 ef
echo substr("abcdef", -3, 1); // 顯示 d
echo substr("abcdef", -3, -1); // 顯示 de
?>[/php]
substr_count()函數的作用是計算字符串中(zhōng)某字符段的出現次數,第三個參數表示在字符串中(zhōng)開(kāi)始比較的位置,省略則默認從頭開(kāi)始,第四個參數表示依次比較的字符數,省略則表示一(yī)直比較到末尾。和substr()函數有所不同的是,這兩個參數都不支持負數。
[php]<?php
$text = 'This is a test';
echo substr_count($text, 'is'); // 顯示 2
echo substr_count($text, 'is', 3); // 顯示 1
echo substr_count($text, 'is', 3, 3); // 顯示 0
?>[/php]
substr_replace()函數的作用是對字符串中(zhōng)的部分(fēn)字符進行替換,substr_replace()函數的第三個參數必選,表示需要處理字符的起始位置,負數表示從後往前計數,第四個參數可選,省略表示一(yī)直替換到最後,正數表示替換的長度,負數表示從後往前替換到的位置。
[php]<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo substr_replace($var, 'bob', 0); // 顯示 bob
echo substr_replace($var, 'bob', 0, 0); // 顯示 bobABCDEFGH:/MNRPQR/
echo substr_replace($var, 'bob', 10, -1); // 顯示 ABCDEFGH:/bob/
echo substr_replace($var, 'bob', -7, -1); // 顯示 ABCDEFGH:/bob/
echo substr_replace($var, '', 10, -1); // 顯示 ABCDEFGH://
?>[/php]
implode()函數的作用是将數組轉變爲字符串,explode()函數的作用是将一(yī)個字符串轉變爲一(yī)數組形式。implode()函數前兩個參數的位置是任意的,而explode()函數則不行。explode()函數第三個參數可選,省略則表示全部返回,正數表示返回的數組中(zhōng)單元的個數,最後一(yī)個單元包含了未處理完的字符串,負數表示返回值中(zhōng)将除去(qù)最後的若幹個單元。join()函數的作用和implode()函數相同,是implode()函數的别名。
[php]<?php
$array = array('lastname', 'email', 'phone');
echo implode($array,","); // 顯示 lastname,email,phone
$str = 'one|two|three';
print_r(explode('|', $str));// 顯示 Array ( [0] => one [1] => two [2] => three )
print_r(explode('|', $str, 2));// 顯示 Array ( [0] => one [1] => two|three )
print_r(explode('|', $str, -1));// 顯示 Array ( [0] => one [1] => two )
?>[/php]
strtok()函數的作用是用指定的若幹個字符來分(fēn)割字符串,此函數的功能較強大(dà),但是使用方法比較特殊。在連續使用的時候,第一(yī)次需要說明字符串和分(fēn)割符,但是第二次的時候,隻要放(fàng)入分(fēn)割符就可以,分(fēn)割符可以是多個内容,但是不能使用字符串,具體(tǐ)請研究下(xià)面的例子:
[php]<?php
$string = "This is\tan example\nstring";
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "$tok<br />";
$tok = strtok(" \n\t");
}
?>[/php]
str_split()函數的作用是将一(yī)個字符串按照字符間距分(fēn)割爲一(yī)個數組,str_split()函數有兩個參數,第二個參數可選,默認值爲“1”。
[php]<?php
$str1 = "asd";
$str2 = "Hello Friend";
print_r(str_split($str1)); // 顯示 Array ( [0] => a [1] => s [2] => d )
print_r($arr2 = str_split($str2, 4)); // 顯示 Array ( [0] => Hell [1] => o Fr [2] => iend )
?>[/php]
chunk_split()函數的作用是按一(yī)定的字符長度将字符串分(fēn)割成小(xiǎo)塊,第二個參數可選,表示字符間距,默認爲76,第三個參數可選,表示用什麽字符進行分(fēn)割,默認爲“\r\n”。
[php]<?php
$str = "asdasdasd";
echo chunk_split($str,3,","); // 顯示 asd,asd,asd,
?>[/php]
wordwrap()函數的作用是按照一(yī)定的字符長度分(fēn)割字符串,第二個參數可選,表示按多少字符進行分(fēn)割,默認爲75,第三個參數可選,表示用哪個字符分(fēn)割,默認爲“\n”,第四個參數可選,true表示強制打破一(yī)個單詞,false表示不大(dà)破單詞,默認爲false。
[php]<?php
$text = "A very long woooooooooood asdasd";
echo wordwrap($text, 12, "<br />\n", true); // woooooooooood被打破
echo wordwrap($text, 12, "<br />\n", false); // woooooooooood未被打破
?>[/php]
strlen()函數的作用是獲取一(yī)個字符串的編碼長度。
[php]<?php
$text1 = "ABC";
$text2 = "中(zhōng)文";
echo strlen($text1); // 顯示 3
echo strlen($text2); // 顯示 6
?>[/php]
str_word_count()函數的作用是獲取字符串裏面的英文單詞信息,第二個參數可選,0表示隻返回單詞的個數,1表示将找到的單詞作爲一(yī)個數組返回,2表示找到的單詞和單詞所在的字符位置信息作爲一(yī)個聯合數組(associative)返回,省略的默認值是0;第三個參數也是可選的,表示需要忽略的斷詞符号,默認的斷詞符号有空格,數字等等,有時候需要忽略一(yī)些。
[php]<?php
$str = "Hello fri3nd, you're
looking good today!";
echo str_word_count($str); // 顯示 7
print_r(str_word_count($str, 1));
// 顯示 Array ( [0] => Hello [1] => fri [2] => nd [3] => good [4] => today )
print_r(str_word_count($str, 2));
// 顯示 Array ( [0] => Hello [6] => fri [10] => nd [14] => good [19] => today )
print_r(str_word_count($str, 1, 'àá~ac3'));
// 顯示 Array ( [0] => Hello [1] => fri3nd [2] => good [3] => today )
?>[/php]
nl_langinfo()函數的作用是獲取某些字符信息,但是沒有在windows平台下(xià)實現,所以,我(wǒ)(wǒ)以後在讨論。
localeconv()函數的作用是獲取數字相關的格式定義。setlocale()函數可以設置關于數字,日期等等的本地格式,相關内容較複雜(zá),這裏省略不談。這兩個函數的作用是爲了解決在不同的國家地區之間,對數字,貨币,日期等字符形式不同的表現内容而進行簡易設置的作用。
strrev()函數的作用是将字符串裏面的所有字母反向排列。str_shuffle()函數的作用是對一(yī)個字符串裏面的字符進行随機排序。
[php]<?php
echo strrev("ABC"); // 顯示 CBA
$str = 'abcdef';
echo str_shuffle($str);
?>[/php]
str_pad()函數的作用是對字符串進行兩側的補白(bái),第二個參數表示補白(bái)以後的長度,第三個參數可選,表示進行補白(bái)的字符串,默認爲空格,第四個參數可選,表示補白(bái)的方式,有三個常量可以選擇:STR_PAD_RIGHT,STR_PAD_LEFT和STR_PAD_BOTH,分(fēn)别表示右補白(bái),左補白(bái)和兩側補白(bái),默認值爲STR_PAD_RIGHT。
[php]<?php
$input = "Alien";
echo str_pad($input, 10); // 顯示 "Alien "
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 顯示 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH); // 顯示 "__Alien___"
echo str_pad($input, 6 , "___"); // 顯示 "Alien_"
?>[/php]
str_repeat()函數的作用是對字符串進行重複組合,第二個參數表示重複的次數,值爲0的時候将返回一(yī)個空字符串。
[php]<?php
echo str_repeat("ab", 3); // 顯示 ababab
?>[/php]
chr()函數的作用是返回一(yī)個字符的ASCII碼,ord()函數的作用是将一(yī)個ASCII碼轉換爲一(yī)個字符。
[php]<?php
$str = "a";
echo ord($str); // 顯示 97
$asc2 = 97;
echo chr($asc2); //顯示 a
?>[/php]
strcmp()函數的作用是對字符串進行大(dà)小(xiǎo)比較,第一(yī)個參數大(dà)于第二個參數時返回一(yī)個大(dà)于0的數,小(xiǎo)于則返回一(yī)個小(xiǎo)于0的數,等于則返回0,此函數的比較結果返回值是非常令人困惑的,因而此函數的主要用處是比較兩個字符串是否相等。strncmp()函數的作用和strcmp()函數類似,區别是strncmp()函數有第三個必選參數,用來限制進行比較的前N個字符。strcasecmp()的作用和strcmp()函數類似,區别是strcasecmp()函數忽略大(dà)小(xiǎo)寫。strncasecmp()函數的作用和strncmp()函數類似,區别是strncasecmp()函數忽略大(dà)小(xiǎo)寫。strnatcmp()函數的作用和strcmp()函數類似,區别是strnatcmp()函數使用自然排序法對字符串之間進行比較。strnatcasecmp()函數的作用和strnatcmp()函數類似,區别是strnatcasecmp()函數比較時不區分(fēn)大(dà)小(xiǎo)寫。strcoll()函數的作用和strcmp()函數類似,區别是strcoll()函數會根據本地環境的設置而改變比較的方式,而産生(shēng)不同的結果,這裏暫時跳過不讨論。
[php]<?php
echo strcmp("red", "red"); // 顯示 0
echo strncmp("red apple", "red", 3); // 顯示 0
echo strcasecmp("Red", "red"); // 顯示 0
echo strncasecmp("Red apple", "red", 3); // 顯示 0
?>[/php]
上面這些函數的另一(yī)個作用是被作爲回調函數的形式使用(其實也是最主要的用途所在):
[php]<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
usort($arr1, "strcmp");
print_r($arr1); // 顯示标準排序以後的結果
usort($arr2, "strnatcmp");
print_r($arr2); // 顯示自然排序以後的結果
?>[/php]
substr_compare()函數可以對字符串進行截取後的比較,第三個參數表示比較開(kāi)始的起始位置,第四個參數可選,表示進行比較的長度,省略則表示一(yī)直比較到末尾,第五個參數可選,設置爲true可以忽略大(dà)小(xiǎo)寫,false表示不忽略大(dà)小(xiǎo)寫,默認值爲false。
[php]<?php
echo substr_compare("abcde", "bc", 1, 2); // 顯示 0
echo substr_compare("abcde", "bcg", 1, 2); //顯示 0
echo substr_compare("abcde", "BC", 1, 2, true); //顯示 0
echo substr_compare("abcde", "bc", 1, 3); //顯示 1
echo substr_compare("abcde", "cd", 1, 2); //顯示 -1
echo substr_compare("abcde", "abc", 5, 1); //顯示 報錯
?>[/php]
similar_text()函數的作用是比較兩個字符串,返回系統認爲的相似字符個數,第三個參數可選,可以對一(yī)個變量附值爲相似度百分(fēn)比。levenshtein()函數的作用是對字符串進行比較,并且返回兩個字符串的相似度,有三個可選參數,但是不知(zhī)道如何使用。
<?
echo similar_text("abcdas", "abdcas", $p); // 顯示 5
echo "$p%"; // 顯示 83.3333333333%
echo levenshtein("ab", "abcd"); // 顯示 2
echo levenshtein("abc", "abcd"); // 顯示 1
echo levenshtein("abcd", "abcd"); // 顯示 0
?>[/php]
soundex()函數的作用是判斷一(yī)個字符串的發音規則,用4位的字符串表示。metaphone()函數的作用是判斷一(yī)個字符串的發音規則,和soundex()函數類似,但是顯示的是一(yī)個不定長的字符串。
[php]<?php
echo soundex("Ellery"); // 顯示 E460
echo soundex("Ghosh"); // 顯示 G200
echo soundex("Heilbronn"); // 顯示 H416
echo metaphone("Ellery"); // 顯示 ELR
echo metaphone("Ghosh"); // 顯示 FX
echo metaphone("Heilbronn"); // 顯示 HLBRN
?>[/php]
addslashes()函數的作用是爲字符串裏面的部分(fēn)字符添加反斜線轉義字符,addslashes()函數隻爲4個字符添加轉義,單引号“’ ”,雙引号“””,反斜線“\”和NULL(“\0”)。addcslashes()函數的作用也是對字符串添加轉義,但是轉義的字符必須由第二個參數指定,第二個參數的使用方法難度太高,跳過不講。stripslashes()函數的作用和addslashes()函數正好相反,可以将addslashes()函數轉義的那4個字符取消轉義。同樣,stripcslashes()函數的作用和addcslashes()函數相反。quotemeta()函數的作用是對11個特定字符進行轉義,包括:. \ + * ? [ ^ ] ( $ ) 似乎是可以用在正則裏面。
[php]<?php
echo addslashes("'\"\ "); // 顯示 \'\"\\
echo addcslashes("zoo['.']", 'zo'); // 顯示 \z\o\o['.']
echo addcslashes("z\"oo['.']", '\'\"'); // 顯示 z\"oo[\'.\']
echo addcslashes('foo[ ]', 'A..z'); // 顯示 \f\o\o\[ \]
echo stripslashes(addslashes("'\"\ ")); // 顯示 '"\
echo stripcslashes(addcslashes("z\"oo['.']", '\'\"')); // 顯示 z"oo['.']
echo quotemeta(". \ + * ?"); // 顯示 \. \\ \+ \* \?
?>[/php]
htmlspecialchars()函數的作用是将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ),默認情況下(xià)主要包括這4個字符:“<”,“>”,“&”和“””,分(fēn)别轉換爲HTML實體(tǐ):“<”,“>”,“&”呵“"”。htmlentities()函數的第二個可選參數可以選擇引号的轉換模式,可以選擇三個常量:ENT_COMPAT表示轉換雙引号但是保留單引号,ENT_QUOTES表示同時轉換雙引号和單引号,ENT_NOQUOTES表示兩個都不轉換,默認值爲ENT_COMPAT。第三個可選參數表示所轉換字符的編碼集。htmlspecialchars_decode()函數的作用和htmlspecialchars()函數剛好相反,但是兩個函數的使用方法一(yī)樣。
[php]<?php
$str = "<a href='test'>Test</a>";
echo htmlspecialchars($str); // 顯示(源代碼裏面) <a href='test'>Test</a>
echo htmlspecialchars($str, ENT_QUOTES); // 顯示(源代碼裏面) <a href='test'>Test</a>
$str = '<a href='test'>Test</a>';
echo htmlspecialchars_decode($str); // 顯示(源代碼裏面) <a href='test'>Test</a>
?>[/php]
htmlentities()函數的用法和htmlspecialchars()函數類似,但是htmlspecialchars()函數會轉義更多的HTML裏面的字符(請查看手冊的htmlspecialchars()函數的表格1《已支持字符集》部分(fēn)),所以使用時要注意加上第三個參數。html_entity_decode()函數的作用和htmlentities()函數正好相反,但是用法完全一(yī)樣,使用時也要注意用到第三個參數。
<meta http-equiv="Content-Type" c />
[php]<?php
$str = "<a href='test'>中(zhōng)文</a>";
echo htmlentities($str,ENT_COMPAT,"UTF-8"); //顯示(源代碼裏面) <a href='test'>涓 枃</a>
echo html_entity_decode(htmlentities($str,ENT_COMPAT,"UTF-8"),ENT_COMPAT,"UTF-8"); // 顯示(源代碼裏面) <a href='test'>中(zhōng)文</a>
?>[/php]
get_html_translation_table()函數的作用是返回可以轉換的HTML實體(tǐ),算是一(yī)個比較有意思,也是有趣的工(gōng)具函數。get_html_translation_table()函數有兩個常量參數,第一(yī)個參數表示所選擇顯示哪種轉換模式下(xià)的内容,HTML_ENTITIES表示大(dà)範圍的htmlentities()函數所用到的轉換内容,HTML_SPECIALCHARS表示小(xiǎo)範圍的htmlspecialchars()函數所用到的轉換内容,第二個參數的三種模式ENT_COMPAT,ENT_QUOTES,ENT_NOQUOTES的作用,可以查看htmlspecialchars()函數裏面的介紹。
[php]<?php
print_r(get_html_translation_table(HTML_SPECIALCHARS,ENT_QUOTES));
?>[/php]
/* 顯示
Array
(
["] => "
['] => '
[<] => <
[>] => >
[&] => &
)
*/
nl2br()函數的作用是将字符串中(zhōng)的換行符“\n”替換成“<br />”。
[php]<?php
echo nl2br("foo isn't\n bar"); // 顯示(源代碼裏面) foo isn't<br /> bar
?>[/php]
strip_tags()函數的作用是去(qù)除一(yī)個字符串裏面的HTML和PHP代碼(其實好像就是去(qù)掉“<”開(kāi)始“>”結尾的字符串,無所謂PHP)。第二個參數表示允許出現的标簽對。
[php]<?php
$text = '<p>Test paragraph.</p><em>Other text</em>';
echo strip_tags($text, '<p>'); // 顯示 <p>Test paragraph.</p>Other text
?>[/php]
parse_str()函數的作用是把一(yī)定格式的字符串轉變爲變量和值,字符串的格式和URL的格式相同。
[php]<?php
parse_str('d=12&c[]=as');
echo $c[0]; // 顯示 as
echo $d; // 顯示 12
?>[/php]
hebrev()函數的作用是将Hebrew編碼的字符串轉換爲可視的文本,hebrevc函數的作用是和hebrev()函數類似,區别是會将字符串裏面的“\n”轉變爲“<br>\n”。hebrev()函數和hebrevc函數的第二個參數用法相同,可以設定每行的顯示字符數,行末不會強制打斷一(yī)個單詞。
convert_cyr_string()函數的作用是将斯拉夫語字符轉換爲别的字符。
bin2hex()函數的作用是将二進制數據轉換成十六進制的數據。
str_rot13函數的作用是将字符串進行ROT13加密處理,方法是将所有字符移動13個字母位置,因爲英文一(yī)共是26個字母,所以該函數的加密解密可以使用同一(yī)個函數。
[php]<?php
echo str_rot13('str_rot13'); // 顯示 fge_ebg13
echo str_rot13(str_rot13('str_rot13')); // 顯示 str_rot13
?>[/php]
md5()函數的作用是将一(yī)個字符串進行MD5算法加密,返回一(yī)個32位的16位字符串,第二個參數如果設置爲true,将會返回一(yī)個16位的2進制字符串。md5_file()函數的作用是對文件進行MD5加密,使用方式和md5()函數相同。
[php]<?php
echo md5('apple'); //顯示 1f3870be274f6c49b3e31a0c6728957f
echo bin2hex(md5('apple', true)); //顯示 1f3870be274f6c49b3e31a0c6728957f
?>[/php]
sha1()函數的作用是将一(yī)個字符串進行SHA1算法加密,返回一(yī)個40位的16位字符串,第二個參數如果設置爲true,将會返回一(yī)個20位的2進制字符串。sha1_file()函數的作用是對文件進行SHA1加密,使用方式和sha1()函數相同。
[php]<?php
$str = 'apple';
echo sha1('apple'); //顯示 d0be2dc421be4fcd0172e5afceea3970e2f3d940
echo bin2hex(sha1('apple', true)); //顯示 d0be2dc421be4fcd0172e5afceea3970e2f3d940
?>[/php]
crypt()函數的作用是對一(yī)個字符串進行散列處理,返回一(yī)個加密後的字符串。第二個可選參數是一(yī)個加密參考量,crypt()函數會根據這個量來産生(shēng)加密的值,第二個參數如果省略,PHP将會随機産生(shēng)一(yī)個參考量;第二個參數的處理,需要根據4個PHP的預定義常量,PHP會更具預定義常量的設定,對參考量進行處理,再進行加密。
CRYPT_STD_DES – 标準模式,獲取參考量的前兩位。
CRYPT_EXT_DES – 擴展模式,獲取參考量的前九位。
CRYPT_MD5 – MD5模式,參考量爲$1$開(kāi)始的一(yī)個常量CRYPT_SALT_LENGTH指定長度的字符串。
CRYPT_BLOWFISH – 河豚模式,參考量爲$2$或者$2a$開(kāi)始的一(yī)個16位長的字符串。
[php]<?php
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl');
} // 顯示 rl.3StKT.4T8M
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm');
} // 顯示 _J9..rasmBYk8r9AiWNc
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$');
} // 顯示 $1$rasmusle$rISCgZzpwk3UhDidwXvin0
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$rasmusler...........$');
} // 顯示 $2a$07$rasmuslerd............nIdrcHdxcUxWomQX9j6kvERCFjTg7Ra
?>[/php]
crc32()函數的作用是計算一(yī)個字符串的crc32多項式
[php]<?php
$checksum = crc32("Hello World!");
printf("%u\n", $checksum); // 顯示 472456355
?>[/php]
quoted_printable_decode()函數不知(zhī)道什麽意思。
convert_uuencode()函數的作用是對一(yī)個字符串進行加密,convert_uudecode()函數的作用和convert_uuencode()函數相反,可以起到解密的作用。
[php]<?php
$some_string = "test\ntext text\r\n";
echo convert_uuencode($some_string); // 顯示 0=&5S=`IT97AT('1E>'0-"@`` `
echo convert_uudecode(convert_uuencode($some_string)); //顯示 test text text
?>[/php]
先給出一(yī)個總表:
addcslashes — 爲字符串裏面的部分(fēn)字符添加反斜線轉義字符
addslashes — 用指定的方式對字符串裏面的字符進行轉義
bin2hex — 将二進制數據轉換成十六進制表示
chop — rtrim() 的别名函數
chr — 返回一(yī)個字符的ASCII碼
chunk_split — 按一(yī)定的字符長度将字符串分(fēn)割成小(xiǎo)塊
convert_cyr_string — 将斯拉夫語字符轉換爲别的字符
convert_uudecode — 解密一(yī)個字符串
convert_uuencode — 加密一(yī)個字符串
count_chars — 返回一(yī)個字符串裏面的字符使用信息
crc32 — 計算一(yī)個字符串的crc32多項式
crypt — 單向散列加密函數
echo — 用以顯示一(yī)些内容
explode — 将一(yī)個字符串用分(fēn)割符轉變爲一(yī)數組形式
fprintf — 按照要求對數據進行返回,并直接寫入文檔流
get_html_translation_table — 返回可以轉換的HTML實體(tǐ)
hebrev — 将Hebrew編碼的字符串轉換爲可視的文本
hebrevc — 将Hebrew編碼的字符串轉換爲可視的文本
html_entity_decode — htmlentities ()函數的反函數,将HTML實體(tǐ)轉換爲字符
htmlentities — 将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ)
htmlspecialchars_decode — htmlspecialchars()函數的反函數,将HTML實體(tǐ)轉換爲字符
htmlspecialchars — 将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ)
implode — 将數組用特定的分(fēn)割符轉變爲字符串
join — 将數組轉變爲字符串,implode()函數的别名
levenshtein — 計算兩個詞的差别大(dà)小(xiǎo)
localeconv — 獲取數字相關的格式定義
ltrim — 去(qù)除字符串左側的空白(bái)或者指定的字符
md5_file — 将一(yī)個文件進行MD5算法加密
md5 — 将一(yī)個字符串進行MD5算法加密
metaphone — 判斷一(yī)個字符串的發音規則
money_format — 按照參數對數字進行格式化的輸出
nl_langinfo — 查詢語言和本地信息
nl2br — 将字符串中(zhōng)的換行符“\n”替換成“<br />”
number_format — 按照參數對數字進行格式化的輸出
ord — 将一(yī)個ASCII碼轉換爲一(yī)個字符
parse_str — 把一(yī)定格式的字符串轉變爲變量和值
print — 用以輸出一(yī)個單獨的值
printf — 按照要求對數據進行顯示
quoted_printable_decode — 将一(yī)個字符串加密爲一(yī)個8位的二進制字符串
quotemeta — 對若幹個特定字符進行轉義
rtrim — 去(qù)除字符串右側的空白(bái)或者指定的字符
setlocale — 設置關于數字,日期等等的本地格式
sha1_file — 将一(yī)個文件進行SHA1算法加密
sha1 — 将一(yī)個字符串進行SHA1算法加密
similar_text — 比較兩個字符串,返回系統認爲的相似字符個數
soundex — 判斷一(yī)個字符串的發音規則
sprintf — 按照要求對數據進行返回,但是不輸出
sscanf — 可以對字符串進行格式化
str_ireplace — 像str_replace()函數一(yī)樣匹配和替換字符串,但是不區分(fēn)大(dà)小(xiǎo)寫
str_pad — 對字符串進行兩側的補白(bái)
str_repeat — 對字符串進行重複組合
str_replace — 匹配和替換字符串
str_rot13 — 将字符串進行ROT13加密處理
str_shuffle — 對一(yī)個字符串裏面的字符進行随機排序
str_split — 将一(yī)個字符串按照字符間距分(fēn)割爲一(yī)個數組
str_word_count — 獲取字符串裏面的英文單詞信息
strcasecmp — 對字符串進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strchr — 通過比較返回一(yī)個字符串的部分(fēn)strstr()函數的别名
strcmp — 對字符串進行大(dà)小(xiǎo)比較
strcoll – 根據本地設置對字符串進行大(dà)小(xiǎo)比較
strcspn — 返回字符連續非匹配長度的值
strip_tags — 去(qù)除一(yī)個字符串裏面的HTML和PHP代碼
stripcslashes — 反轉義addcslashes()函數轉義處理過的字符串
stripos — 查找并返回首個匹配項的位置,匹配不區分(fēn)大(dà)小(xiǎo)寫
stripslashes — 反轉義addslashes()函數轉義處理過的字符串
stristr — 通過比較返回一(yī)個字符串的部分(fēn),比較時不區分(fēn)大(dà)小(xiǎo)寫
strlen — 獲取一(yī)個字符串的編碼長度
strnatcasecmp — 使用自然排序法對字符串進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strnatcmp — 使用自然排序法對字符串進行大(dà)小(xiǎo)比較
strncasecmp — 對字符串的前N個字符進行大(dà)小(xiǎo)比較,不區分(fēn)大(dà)小(xiǎo)寫
strncmp — 對字符串的前N個字符進行大(dà)小(xiǎo)比較
strpbrk — 通過比較返回一(yī)個字符串的部分(fēn)
strpos — 查找并返回首個匹配項的位置
strrchr — 通過從後往前比較返回一(yī)個字符串的部分(fēn)
strrev — 将字符串裏面的所有字母反向排列
strripos — 從後往前查找并返回首個匹配項的位置,匹配不區分(fēn)大(dà)小(xiǎo)寫
strrpos – 從後往前查找并返回首個匹配項的位置
strspn — 匹配并返回字符連續出現長度的值
strstr — 通過比較返回一(yī)個字符串的部分(fēn)
strtok — 用指定的若幹個字符來分(fēn)割字符串
strtolower — 将字符串轉變爲小(xiǎo)寫
strtoupper –将字符串轉變爲大(dà)寫
strtr — 對字符串比較替換
substr_compare — 對字符串進行截取後的比較
substr_count — 計算字符串中(zhōng)某字符段的出現次數
substr_replace — 對字符串中(zhōng)的部分(fēn)字符進行替換
substr — 對字符串進行截取
trim — 去(qù)除字符串兩邊的空白(bái)或者指定的字符
ucfirst — 将所給字符串的第一(yī)個字母轉換爲大(dà)寫
ucwords — 将所給字符串的每一(yī)個英文單詞的第一(yī)個字母變成大(dà)寫
vfprintf — 按照要求對數據進行返回,并直接寫入文檔流
vprintf — 按照要求對數據進行顯示
vsprintf — 按照要求對數據進行返回,但是不輸出
wordwrap — 按照一(yī)定的字符長度分(fēn)割字符串
strtolower()函數把所有字符變成小(xiǎo)寫,strtoupper()函數把所有字符變成大(dà)寫,ucfirst()函數将所給字符串的第一(yī)個字母轉換爲大(dà)寫,ucwords()函數将所給字符串的每一(yī)個英文單詞的第一(yī)個字母變成大(dà)寫。
ucfirst()隻處理字符串的首個字符,ucwords()隻處理每個單詞的首字母(以空格來界定是否是單詞,“today!Hi”、“today.Hi” 會被認爲是一(yī)個單詞),對于其餘字母的大(dà)小(xiǎo)寫狀态并不改變。
[php]<?php
echo strtolower("ABCD");//顯示 abcd
echo strtoupper("abcd");//顯示 ABCD
echo ucfirst("what a beautiful day today!");//顯示 What a beautiful day today!
echo ucwords("what a beautiful day today!");//顯示 What A Beautiful Day Today!
?>[/php]
trim()函數去(qù)除字符串兩邊的空白(bái)或者指定的字符,ltrim()函數去(qù)除字符串左側的空白(bái)或者指定的字符,rtrim()函數去(qù)除字符串右側的空白(bái)或者指定的字符,chop()函數和rtrim()函數功能相同,這四個函數都不支持UFT-8中(zhōng)文字符。
[php]<?php
echo trim("what a beautiful day today!","! adlotwy");//顯示 hat a beautifu
echo ltrim("what a beautiful day today!","! adlotwy");//顯示 hat a beautiful day today!
echo rtrim("what a beautiful day today!","! adlotwy");//顯示 what a beautifu
echo chop("what a beautiful day today!","! adlotwy");//顯示 what a beautifu
?>[/php]
echo()函數用以顯示一(yī)些内容,可以使用<<《What is the difference between echo and print》 查看兩者的差别。echo() 和 print()後面的小(xiǎo)括号,可加可不加。
[php]<?php
$temp = "都";
echo $temp;//顯示“都”
echo <<<END
大(dà)
家
$temp
好
嗎(ma)
?
END;//顯示“大(dà)家都好嗎(ma)?”
echo "大(dà)家",$temp,"好!";//顯示“大(dà)家都好”
$temp = "都";
print $temp; //顯示“都”
print <<<END
大(dà)
家
$temp
好
嗎(ma)
?
END;//顯示“大(dà)家都好嗎(ma)?”
?>[/php]
printf()函數可以按照要求對數據進行顯示,該函數的功能異常強大(dà),即可以讓值在不同的字符格式和進制之間轉換,還可以實現字符補白(bái)(pad)和截取等功能。sprintf()函數,fprintf()函數的功能和printf()函數完全一(yī)樣,隻不過sprintf()函數是返回結果而不是直接輸出,fprintf()必須用在将輸出寫入文檔流的時候。下(xià)面僅以printf()函數舉例:
在printf()函數的第一(yī)個參數中(zhōng):
% - 轉義字符(在%開(kāi)始,字母結束的格式定義内部,使用“’”進行轉義)
b – 二進制格式輸出
c - 将ASCII值轉變爲對應的值輸出
d – 有符号的十進制數輸出(整數)
e – 科學計數法輸出
u – 無符号的十進制數輸出(正數)
f – 浮點格式輸出(locale aware)
F – 浮點格式輸出(non-locale aware)
o – 八進制格式輸出
s – 字符串格時輸出
x – 十六進制格式輸出(字母小(xiǎo)寫)
X - 十六進制格式輸出(字母大(dà)寫)
[php]<?php
$n = 43951789;
$u = -43951789;
$c = 65; // 'A'的ASCII值爲65
printf("%b", $n); //顯示10100111101010011010101101
printf("%c", $c); //顯示A
printf("%d", $n); //顯示43951789
printf("%e", $n); //顯示4.39518e+7
printf("%u", $n); //顯示43951789
printf("%u", $u); //顯示4251015507
printf("%f", $n); //顯示43951789.000000
printf("%F", $n); //顯示43951789.000000
printf("%o", $n); //顯示247523255
printf("%s", $n); //顯示43951789
printf("%x", $n); //顯示29ea6ad
printf("%X", $n); //顯示29EA6AD
printf("%+d", $n); //顯示+43951789
printf("%+d", $u); //顯示-43951789
?>[/php]
printf的第一(yī)個參數還内置了類似正則的功能:
1、第一(yī)位是可選的一(yī)個“+”,這個符号隻對數字格式的輸出有效,因爲如果是負數的話(huà),前面會有一(yī)個“-”,有時候會需要在正數前面加一(yī)個“+”,但是PHP默認是隐去(qù)“+”号顯示的,所以需要在前面加一(yī)個“+”輸出“+”号
2、第二位是可選的填充字符,用這個字符來起到填充空白(bái)的左右,功能類似str_pad()函數,保留字符可以用“’”轉義
3、第三位表示填充的方向,是可選的,“+”是默認值,表示在左側填充,“-”表示在右側填充
4、第四位表示填充完成後的長度,也是可選的,沒有這個參數就表示不進行填充
5、第五位可選參數,如果輸出是浮點數,可以控制小(xiǎo)數點後面的個數,如果是輸出字符串,則可以用來截取字符串的長度,使用時爲了和前面的參數區分(fēn),需要用“.”隔開(kāi)
[php]<?php
$t = 'many monkeys';
$n = 1213;
printf("%+d",$n); // 1、顯示 +1213
printf("%010d",$n); // 2、顯示000001213
printf("%+'#10d",$n); // 2、顯示 #####+1213
printf("%+'#-10d",$n); // 3、顯示 +1213#####
printf("%.2f",$n); // 5、顯示 1213.00
printf("%.7s",$t); // 5、顯示 many mo
?>[/php]
了解了上面這些之後,讓我(wǒ)(wǒ)們看printf()函數的使用方法,其實就是将接受的從第二個參數以後的所有參數一(yī)個一(yī)個的在第一(yī)個參數中(zhōng)需要轉換的地方輸出,如果參數次序被打亂,就需要使用“2\$”這樣的字符來表明變量的位置。
[php]<?php
$num = "tree";
$location = 10;
$format1 = "The %s contains %d monkeys";
printf($format1, $num, $location);
//顯示 The tree contains 10 monkeys
$format2 = "The %s contains %d monkeys";
printf($format2, $location, $num);
//顯示 The tree contains 10 monkeys
?>[/php]
vprintf()函數、vsprintf()函數、vfprintf()函數三個函數的功能和上面的printf()函數、sprintf()函數、fprintf()的功能一(yī)樣,vprintf()函數直接輸出,vsprintf()函數返回但是不輸出,vfprintf()函數直接将結果輸出到文檔流,區别就是這三個函數接受的參數都是數組形式的,而不是一(yī)個一(yī)個的變量。
這裏隻舉vprintf()函數的例子:
[php]<?php
$num = "tree";
$location = 10;
$argu1 = array("tree",10);
$argu2 = array(10,"tree");
$format1 = "The %s contains %d monkeys";
printf($format1, $num, $location);
// 顯示 The tree contains 10 monkeys
$format1 = "The %s contains %d monkeys";
vprintf($format1, $argu1);
// 顯示 The tree contains 10 monkeys
$format2 = "The %2\$s contains %1\$d monkeys";
vprintf($format2, $argu2);
// 顯示 The tree contains 10 monkeys
?>[/php]
number_format()函數可以按照參數對數字進行格式化的輸出,number_format()函數最多有4個參數,第一(yī)個參數是輸出的數字,第二個參數表示保留幾位小(xiǎo)數,第三個參數和第四個參數必須同時使用(就是說不能隻用第三個參數,而不使用第四個參數),分(fēn)别表示小(xiǎo)數點的樣式和千分(fēn)符的樣式,默認分(fēn)别爲“.”和“,”。
[php]<?php
$num = 1234.56;
$new_num = number_format($num, 3, ".", "-");
echo $new_num; // 顯示 1-234.560
?>[/php]
money_format()函數需要C裏面的strfmon()函數支持,所以需要系統能夠提供C函數庫,很顯然,windows系統無法支持此功能,所以在windows下(xià)面的PHP環境不支持money_format()函數,此函數的介紹以後再補充:(
sscanf()函數可以對字符串進行格式化,第一(yī)個參數表示需要處理的字符,第二個參數表示變量匹配的規則(匹配規則請參照上面的printf()函數),後面的參數可選,分(fēn)别對應需要賦值的變量,如果僅僅隻有2個參數,那麽所有的變量值将以一(yī)個數組的形式返回。在下(xià)面的例子中(zhōng),“%s”的匹配是貪婪的,所以在使用時要注意。
[php]<?php
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "$year-" .$month. "-$day";// 顯示 2000-January-1
?>[/php]
str_replace()函數可以匹配和替換字符串,第一(yī)個參數表示需要匹配的項,第二個參數表示替換的項,第三個參數表示處理的字符串。第四個參數可選,将一(yī)個變量賦值爲匹配的次數,前兩個參數也可以是數組形式的。str_ireplace()函數的功能和str_replace()函數類似,隻不過在匹配的時候str_ireplace()函數會忽略大(dà)小(xiǎo)寫。
[php]<?php
$str1 = str_replace("world", "body", "hello world world");
echo $str1;// 顯示 hello body body
$str1 = str_ireplace("WORLD", "body", "hello world world");
echo $str1;// 顯示 hello body body
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase, $count);
echo $newphrase;// 顯示 You should eat pizza, beer, and ice cream every day.
echo $count; // 顯示 3
?>[/php]
strtr()函數的作用是對字符串替換,strtr()函數有兩種使用方法,第一(yī)種使用三個參數,替換時會将第二個參數的字符串替換爲第三個參數的字符串(如果兩個字符串參數的長度不一(yī)緻,則教長的那個字符串将會被截斷),第二種方法使用兩個參數,第二個參數是一(yī)個準備進行替換處理的數組。
[php]<?php
$trans = strtr("hello world", "world", "body");
echo $trans;//顯示 heyyo bodyd (w=>b,o=>o,r=>d,l=>y)
$arr = array("hello" => "hi", "hi" => "hello");
$trans = strtr("hi all, I said hello", $arr);
echo $trans;//顯示 hello all, I said hi
?>[/php]
strstr()函數通過比較返回一(yī)個字符串的部分(fēn)。函數有兩個參數,第一(yī)個參數表示處理的字符串,第二個參數表示匹配項,返回結果爲從匹配位置開(kāi)始到最後的一(yī)個字符串,如果沒有匹配,則返回false。strchr()函數是strstr()函數的别名,功能和使用方法完全一(yī)樣。strrchr()函數的功能和strstr()函數類似,區别是strrchr()函數是從後向前匹配的,stristr()函數的功能和strstr()函數一(yī)樣,但是匹配是不區分(fēn)字母的大(dà)小(xiǎo)寫。strpbrk()的功能和strstr()函數類似,是在一(yī)個字母串裏面找出第一(yī)個匹配項,返回以後的結果。
[php]<?php
$email = [email=]'user@example.com'[/email];
$domain = strstr($email, [email=]'@'[/email]);
echo $domain; // 顯示 @example.com
$exam = strrchr($email, 'e');
echo $exam; // 顯示 e.com
$exam = stristr($email, 'EX');
echo $exam; // 顯示 example.com
$exam = strpbrk($email, 'pe');
echo $exam; // 顯示 er@example.com
?>[/php]
strpos()函數查找并返回首個匹配項的位置,第一(yī)個參數表示處理的字符串,第二個參數表示匹配項,第三個參數可選,表示開(kāi)始執行查找的位置。stripos()函數的功能和strpos()函數類似,區别是匹配的時候不會區分(fēn)大(dà)小(xiǎo)寫。strrpos()函數和strpos()函數功能類似,區别是從後往前匹配,strripos()函數的功能和strrpos()函數類似,區别是不區分(fēn)大(dà)小(xiǎo)寫。strrpos()函數在PHP4中(zhōng)隻支持單個字母的查找,如果參數是字符串,則截取第一(yī)個字母,PHP4不支持strripos()函數。
[php]<?php
$newstring = 'abcdef abcdefab';
$pos = strpos($newstring, 'a', 1);
echo $pos; // 顯示 7
$pos = strrpos($newstring, 'ab', 6);
echo $pos; // 顯示 13
?>[/php]
count_chars()函數的作用是返回一(yī)個字符串裏面的字符使用信息。第二個參數五個參數:
0 - 以所有的每個字節值作爲鍵名,出現次數作爲值的數組。
1 - 與 0 相同,但隻列出出現次數大(dà)于零的字節值。
2 - 與 0 相同,但隻列出出現次數等于零的字節值。
3 - 返回由所有使用了的字節值組成的字符串。
4 - 返回由所有未使用的字節值組成的字符串。
[php]<?php
$data = "this is a test world";
print_r(count_chars($data, 1)); // 顯示用到字符信息
print_r(count_chars($data, 3)); // 顯示 adehilorstw
?>[/php]
strspn()函數的作用是匹配并返回第二個參數裏面的單字符連續出現長度的值,strspn()函數的第三個參數和第四個參數可選,分(fēn)别表示開(kāi)始匹配的位置和返回的最大(dà)值。strcspn()函數的使用方法和strspn()函數類似,但功能卻相反,返回的是第二個參數中(zhōng)不匹配的字符串長度。
[php]<?php
$var = strspn("42123 is the answer", "1234567890");
echo $var; //顯示 5
echo strspn("faoaaol", "oa", 1, 3); // 顯示 3
echo strcspn("csdcsdfaoaaol", "oa", 1, 9); // 顯示 6
?>[/php]
substr()函數可以對字符串進行截取,substr()函數可以有三個參數,第二個參數如果是空,那麽默認就爲0,如果我(wǒ)(wǒ)負數,就表示從後往前計數,第三個參數如果是正數,表示字符串截取的長度,如果省略,則會一(yī)直截取到最後,如果是負數,則表示從後往前截取到的位置。
[php]<?php
echo substr('abcdef',3, 2); // 顯示 de
echo substr('abcdef',"", 2); // 顯示 ab
echo substr("abcdef", -2); // 顯示 ef
echo substr("abcdef", -3, 1); // 顯示 d
echo substr("abcdef", -3, -1); // 顯示 de
?>[/php]
substr_count()函數的作用是計算字符串中(zhōng)某字符段的出現次數,第三個參數表示在字符串中(zhōng)開(kāi)始比較的位置,省略則默認從頭開(kāi)始,第四個參數表示依次比較的字符數,省略則表示一(yī)直比較到末尾。和substr()函數有所不同的是,這兩個參數都不支持負數。
[php]<?php
$text = 'This is a test';
echo substr_count($text, 'is'); // 顯示 2
echo substr_count($text, 'is', 3); // 顯示 1
echo substr_count($text, 'is', 3, 3); // 顯示 0
?>[/php]
substr_replace()函數的作用是對字符串中(zhōng)的部分(fēn)字符進行替換,substr_replace()函數的第三個參數必選,表示需要處理字符的起始位置,負數表示從後往前計數,第四個參數可選,省略表示一(yī)直替換到最後,正數表示替換的長度,負數表示從後往前替換到的位置。
[php]<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo substr_replace($var, 'bob', 0); // 顯示 bob
echo substr_replace($var, 'bob', 0, 0); // 顯示 bobABCDEFGH:/MNRPQR/
echo substr_replace($var, 'bob', 10, -1); // 顯示 ABCDEFGH:/bob/
echo substr_replace($var, 'bob', -7, -1); // 顯示 ABCDEFGH:/bob/
echo substr_replace($var, '', 10, -1); // 顯示 ABCDEFGH://
?>[/php]
implode()函數的作用是将數組轉變爲字符串,explode()函數的作用是将一(yī)個字符串轉變爲一(yī)數組形式。implode()函數前兩個參數的位置是任意的,而explode()函數則不行。explode()函數第三個參數可選,省略則表示全部返回,正數表示返回的數組中(zhōng)單元的個數,最後一(yī)個單元包含了未處理完的字符串,負數表示返回值中(zhōng)将除去(qù)最後的若幹個單元。join()函數的作用和implode()函數相同,是implode()函數的别名。
[php]<?php
$array = array('lastname', 'email', 'phone');
echo implode($array,","); // 顯示 lastname,email,phone
$str = 'one|two|three';
print_r(explode('|', $str));// 顯示 Array ( [0] => one [1] => two [2] => three )
print_r(explode('|', $str, 2));// 顯示 Array ( [0] => one [1] => two|three )
print_r(explode('|', $str, -1));// 顯示 Array ( [0] => one [1] => two )
?>[/php]
strtok()函數的作用是用指定的若幹個字符來分(fēn)割字符串,此函數的功能較強大(dà),但是使用方法比較特殊。在連續使用的時候,第一(yī)次需要說明字符串和分(fēn)割符,但是第二次的時候,隻要放(fàng)入分(fēn)割符就可以,分(fēn)割符可以是多個内容,但是不能使用字符串,具體(tǐ)請研究下(xià)面的例子:
[php]<?php
$string = "This is\tan example\nstring";
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "$tok<br />";
$tok = strtok(" \n\t");
}
?>[/php]
str_split()函數的作用是将一(yī)個字符串按照字符間距分(fēn)割爲一(yī)個數組,str_split()函數有兩個參數,第二個參數可選,默認值爲“1”。
[php]<?php
$str1 = "asd";
$str2 = "Hello Friend";
print_r(str_split($str1)); // 顯示 Array ( [0] => a [1] => s [2] => d )
print_r($arr2 = str_split($str2, 4)); // 顯示 Array ( [0] => Hell [1] => o Fr [2] => iend )
?>[/php]
chunk_split()函數的作用是按一(yī)定的字符長度将字符串分(fēn)割成小(xiǎo)塊,第二個參數可選,表示字符間距,默認爲76,第三個參數可選,表示用什麽字符進行分(fēn)割,默認爲“\r\n”。
[php]<?php
$str = "asdasdasd";
echo chunk_split($str,3,","); // 顯示 asd,asd,asd,
?>[/php]
wordwrap()函數的作用是按照一(yī)定的字符長度分(fēn)割字符串,第二個參數可選,表示按多少字符進行分(fēn)割,默認爲75,第三個參數可選,表示用哪個字符分(fēn)割,默認爲“\n”,第四個參數可選,true表示強制打破一(yī)個單詞,false表示不大(dà)破單詞,默認爲false。
[php]<?php
$text = "A very long woooooooooood asdasd";
echo wordwrap($text, 12, "<br />\n", true); // woooooooooood被打破
echo wordwrap($text, 12, "<br />\n", false); // woooooooooood未被打破
?>[/php]
strlen()函數的作用是獲取一(yī)個字符串的編碼長度。
[php]<?php
$text1 = "ABC";
$text2 = "中(zhōng)文";
echo strlen($text1); // 顯示 3
echo strlen($text2); // 顯示 6
?>[/php]
str_word_count()函數的作用是獲取字符串裏面的英文單詞信息,第二個參數可選,0表示隻返回單詞的個數,1表示将找到的單詞作爲一(yī)個數組返回,2表示找到的單詞和單詞所在的字符位置信息作爲一(yī)個聯合數組(associative)返回,省略的默認值是0;第三個參數也是可選的,表示需要忽略的斷詞符号,默認的斷詞符号有空格,數字等等,有時候需要忽略一(yī)些。
[php]<?php
$str = "Hello fri3nd, you're
looking good today!";
echo str_word_count($str); // 顯示 7
print_r(str_word_count($str, 1));
// 顯示 Array ( [0] => Hello [1] => fri [2] => nd [3] => good [4] => today )
print_r(str_word_count($str, 2));
// 顯示 Array ( [0] => Hello [6] => fri [10] => nd [14] => good [19] => today )
print_r(str_word_count($str, 1, 'àá~ac3'));
// 顯示 Array ( [0] => Hello [1] => fri3nd [2] => good [3] => today )
?>[/php]
nl_langinfo()函數的作用是獲取某些字符信息,但是沒有在windows平台下(xià)實現,所以,我(wǒ)(wǒ)以後在讨論。
localeconv()函數的作用是獲取數字相關的格式定義。setlocale()函數可以設置關于數字,日期等等的本地格式,相關内容較複雜(zá),這裏省略不談。這兩個函數的作用是爲了解決在不同的國家地區之間,對數字,貨币,日期等字符形式不同的表現内容而進行簡易設置的作用。
strrev()函數的作用是将字符串裏面的所有字母反向排列。str_shuffle()函數的作用是對一(yī)個字符串裏面的字符進行随機排序。
[php]<?php
echo strrev("ABC"); // 顯示 CBA
$str = 'abcdef';
echo str_shuffle($str);
?>[/php]
str_pad()函數的作用是對字符串進行兩側的補白(bái),第二個參數表示補白(bái)以後的長度,第三個參數可選,表示進行補白(bái)的字符串,默認爲空格,第四個參數可選,表示補白(bái)的方式,有三個常量可以選擇:STR_PAD_RIGHT,STR_PAD_LEFT和STR_PAD_BOTH,分(fēn)别表示右補白(bái),左補白(bái)和兩側補白(bái),默認值爲STR_PAD_RIGHT。
[php]<?php
$input = "Alien";
echo str_pad($input, 10); // 顯示 "Alien "
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 顯示 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH); // 顯示 "__Alien___"
echo str_pad($input, 6 , "___"); // 顯示 "Alien_"
?>[/php]
str_repeat()函數的作用是對字符串進行重複組合,第二個參數表示重複的次數,值爲0的時候将返回一(yī)個空字符串。
[php]<?php
echo str_repeat("ab", 3); // 顯示 ababab
?>[/php]
chr()函數的作用是返回一(yī)個字符的ASCII碼,ord()函數的作用是将一(yī)個ASCII碼轉換爲一(yī)個字符。
[php]<?php
$str = "a";
echo ord($str); // 顯示 97
$asc2 = 97;
echo chr($asc2); //顯示 a
?>[/php]
strcmp()函數的作用是對字符串進行大(dà)小(xiǎo)比較,第一(yī)個參數大(dà)于第二個參數時返回一(yī)個大(dà)于0的數,小(xiǎo)于則返回一(yī)個小(xiǎo)于0的數,等于則返回0,此函數的比較結果返回值是非常令人困惑的,因而此函數的主要用處是比較兩個字符串是否相等。strncmp()函數的作用和strcmp()函數類似,區别是strncmp()函數有第三個必選參數,用來限制進行比較的前N個字符。strcasecmp()的作用和strcmp()函數類似,區别是strcasecmp()函數忽略大(dà)小(xiǎo)寫。strncasecmp()函數的作用和strncmp()函數類似,區别是strncasecmp()函數忽略大(dà)小(xiǎo)寫。strnatcmp()函數的作用和strcmp()函數類似,區别是strnatcmp()函數使用自然排序法對字符串之間進行比較。strnatcasecmp()函數的作用和strnatcmp()函數類似,區别是strnatcasecmp()函數比較時不區分(fēn)大(dà)小(xiǎo)寫。strcoll()函數的作用和strcmp()函數類似,區别是strcoll()函數會根據本地環境的設置而改變比較的方式,而産生(shēng)不同的結果,這裏暫時跳過不讨論。
[php]<?php
echo strcmp("red", "red"); // 顯示 0
echo strncmp("red apple", "red", 3); // 顯示 0
echo strcasecmp("Red", "red"); // 顯示 0
echo strncasecmp("Red apple", "red", 3); // 顯示 0
?>[/php]
上面這些函數的另一(yī)個作用是被作爲回調函數的形式使用(其實也是最主要的用途所在):
[php]<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
usort($arr1, "strcmp");
print_r($arr1); // 顯示标準排序以後的結果
usort($arr2, "strnatcmp");
print_r($arr2); // 顯示自然排序以後的結果
?>[/php]
substr_compare()函數可以對字符串進行截取後的比較,第三個參數表示比較開(kāi)始的起始位置,第四個參數可選,表示進行比較的長度,省略則表示一(yī)直比較到末尾,第五個參數可選,設置爲true可以忽略大(dà)小(xiǎo)寫,false表示不忽略大(dà)小(xiǎo)寫,默認值爲false。
[php]<?php
echo substr_compare("abcde", "bc", 1, 2); // 顯示 0
echo substr_compare("abcde", "bcg", 1, 2); //顯示 0
echo substr_compare("abcde", "BC", 1, 2, true); //顯示 0
echo substr_compare("abcde", "bc", 1, 3); //顯示 1
echo substr_compare("abcde", "cd", 1, 2); //顯示 -1
echo substr_compare("abcde", "abc", 5, 1); //顯示 報錯
?>[/php]
similar_text()函數的作用是比較兩個字符串,返回系統認爲的相似字符個數,第三個參數可選,可以對一(yī)個變量附值爲相似度百分(fēn)比。levenshtein()函數的作用是對字符串進行比較,并且返回兩個字符串的相似度,有三個可選參數,但是不知(zhī)道如何使用。
<?
echo similar_text("abcdas", "abdcas", $p); // 顯示 5
echo "$p%"; // 顯示 83.3333333333%
echo levenshtein("ab", "abcd"); // 顯示 2
echo levenshtein("abc", "abcd"); // 顯示 1
echo levenshtein("abcd", "abcd"); // 顯示 0
?>[/php]
soundex()函數的作用是判斷一(yī)個字符串的發音規則,用4位的字符串表示。metaphone()函數的作用是判斷一(yī)個字符串的發音規則,和soundex()函數類似,但是顯示的是一(yī)個不定長的字符串。
[php]<?php
echo soundex("Ellery"); // 顯示 E460
echo soundex("Ghosh"); // 顯示 G200
echo soundex("Heilbronn"); // 顯示 H416
echo metaphone("Ellery"); // 顯示 ELR
echo metaphone("Ghosh"); // 顯示 FX
echo metaphone("Heilbronn"); // 顯示 HLBRN
?>[/php]
addslashes()函數的作用是爲字符串裏面的部分(fēn)字符添加反斜線轉義字符,addslashes()函數隻爲4個字符添加轉義,單引号“’ ”,雙引号“””,反斜線“\”和NULL(“\0”)。addcslashes()函數的作用也是對字符串添加轉義,但是轉義的字符必須由第二個參數指定,第二個參數的使用方法難度太高,跳過不講。stripslashes()函數的作用和addslashes()函數正好相反,可以将addslashes()函數轉義的那4個字符取消轉義。同樣,stripcslashes()函數的作用和addcslashes()函數相反。quotemeta()函數的作用是對11個特定字符進行轉義,包括:. \ + * ? [ ^ ] ( $ ) 似乎是可以用在正則裏面。
[php]<?php
echo addslashes("'\"\ "); // 顯示 \'\"\\
echo addcslashes("zoo['.']", 'zo'); // 顯示 \z\o\o['.']
echo addcslashes("z\"oo['.']", '\'\"'); // 顯示 z\"oo[\'.\']
echo addcslashes('foo[ ]', 'A..z'); // 顯示 \f\o\o\[ \]
echo stripslashes(addslashes("'\"\ ")); // 顯示 '"\
echo stripcslashes(addcslashes("z\"oo['.']", '\'\"')); // 顯示 z"oo['.']
echo quotemeta(". \ + * ?"); // 顯示 \. \\ \+ \* \?
?>[/php]
htmlspecialchars()函數的作用是将字符串中(zhōng)一(yī)些字符轉換爲HTML實體(tǐ),默認情況下(xià)主要包括這4個字符:“<”,“>”,“&”和“””,分(fēn)别轉換爲HTML實體(tǐ):“<”,“>”,“&”呵“"”。htmlentities()函數的第二個可選參數可以選擇引号的轉換模式,可以選擇三個常量:ENT_COMPAT表示轉換雙引号但是保留單引号,ENT_QUOTES表示同時轉換雙引号和單引号,ENT_NOQUOTES表示兩個都不轉換,默認值爲ENT_COMPAT。第三個可選參數表示所轉換字符的編碼集。htmlspecialchars_decode()函數的作用和htmlspecialchars()函數剛好相反,但是兩個函數的使用方法一(yī)樣。
[php]<?php
$str = "<a href='test'>Test</a>";
echo htmlspecialchars($str); // 顯示(源代碼裏面) <a href='test'>Test</a>
echo htmlspecialchars($str, ENT_QUOTES); // 顯示(源代碼裏面) <a href='test'>Test</a>
$str = '<a href='test'>Test</a>';
echo htmlspecialchars_decode($str); // 顯示(源代碼裏面) <a href='test'>Test</a>
?>[/php]
htmlentities()函數的用法和htmlspecialchars()函數類似,但是htmlspecialchars()函數會轉義更多的HTML裏面的字符(請查看手冊的htmlspecialchars()函數的表格1《已支持字符集》部分(fēn)),所以使用時要注意加上第三個參數。html_entity_decode()函數的作用和htmlentities()函數正好相反,但是用法完全一(yī)樣,使用時也要注意用到第三個參數。
<meta http-equiv="Content-Type" c />
[php]<?php
$str = "<a href='test'>中(zhōng)文</a>";
echo htmlentities($str,ENT_COMPAT,"UTF-8"); //顯示(源代碼裏面) <a href='test'>涓 枃</a>
echo html_entity_decode(htmlentities($str,ENT_COMPAT,"UTF-8"),ENT_COMPAT,"UTF-8"); // 顯示(源代碼裏面) <a href='test'>中(zhōng)文</a>
?>[/php]
get_html_translation_table()函數的作用是返回可以轉換的HTML實體(tǐ),算是一(yī)個比較有意思,也是有趣的工(gōng)具函數。get_html_translation_table()函數有兩個常量參數,第一(yī)個參數表示所選擇顯示哪種轉換模式下(xià)的内容,HTML_ENTITIES表示大(dà)範圍的htmlentities()函數所用到的轉換内容,HTML_SPECIALCHARS表示小(xiǎo)範圍的htmlspecialchars()函數所用到的轉換内容,第二個參數的三種模式ENT_COMPAT,ENT_QUOTES,ENT_NOQUOTES的作用,可以查看htmlspecialchars()函數裏面的介紹。
[php]<?php
print_r(get_html_translation_table(HTML_SPECIALCHARS,ENT_QUOTES));
?>[/php]
/* 顯示
Array
(
["] => "
['] => '
[<] => <
[>] => >
[&] => &
)
*/
nl2br()函數的作用是将字符串中(zhōng)的換行符“\n”替換成“<br />”。
[php]<?php
echo nl2br("foo isn't\n bar"); // 顯示(源代碼裏面) foo isn't<br /> bar
?>[/php]
strip_tags()函數的作用是去(qù)除一(yī)個字符串裏面的HTML和PHP代碼(其實好像就是去(qù)掉“<”開(kāi)始“>”結尾的字符串,無所謂PHP)。第二個參數表示允許出現的标簽對。
[php]<?php
$text = '<p>Test paragraph.</p><em>Other text</em>';
echo strip_tags($text, '<p>'); // 顯示 <p>Test paragraph.</p>Other text
?>[/php]
parse_str()函數的作用是把一(yī)定格式的字符串轉變爲變量和值,字符串的格式和URL的格式相同。
[php]<?php
parse_str('d=12&c[]=as');
echo $c[0]; // 顯示 as
echo $d; // 顯示 12
?>[/php]
hebrev()函數的作用是将Hebrew編碼的字符串轉換爲可視的文本,hebrevc函數的作用是和hebrev()函數類似,區别是會将字符串裏面的“\n”轉變爲“<br>\n”。hebrev()函數和hebrevc函數的第二個參數用法相同,可以設定每行的顯示字符數,行末不會強制打斷一(yī)個單詞。
convert_cyr_string()函數的作用是将斯拉夫語字符轉換爲别的字符。
bin2hex()函數的作用是将二進制數據轉換成十六進制的數據。
str_rot13函數的作用是将字符串進行ROT13加密處理,方法是将所有字符移動13個字母位置,因爲英文一(yī)共是26個字母,所以該函數的加密解密可以使用同一(yī)個函數。
[php]<?php
echo str_rot13('str_rot13'); // 顯示 fge_ebg13
echo str_rot13(str_rot13('str_rot13')); // 顯示 str_rot13
?>[/php]
md5()函數的作用是将一(yī)個字符串進行MD5算法加密,返回一(yī)個32位的16位字符串,第二個參數如果設置爲true,将會返回一(yī)個16位的2進制字符串。md5_file()函數的作用是對文件進行MD5加密,使用方式和md5()函數相同。
[php]<?php
echo md5('apple'); //顯示 1f3870be274f6c49b3e31a0c6728957f
echo bin2hex(md5('apple', true)); //顯示 1f3870be274f6c49b3e31a0c6728957f
?>[/php]
sha1()函數的作用是将一(yī)個字符串進行SHA1算法加密,返回一(yī)個40位的16位字符串,第二個參數如果設置爲true,将會返回一(yī)個20位的2進制字符串。sha1_file()函數的作用是對文件進行SHA1加密,使用方式和sha1()函數相同。
[php]<?php
$str = 'apple';
echo sha1('apple'); //顯示 d0be2dc421be4fcd0172e5afceea3970e2f3d940
echo bin2hex(sha1('apple', true)); //顯示 d0be2dc421be4fcd0172e5afceea3970e2f3d940
?>[/php]
crypt()函數的作用是對一(yī)個字符串進行散列處理,返回一(yī)個加密後的字符串。第二個可選參數是一(yī)個加密參考量,crypt()函數會根據這個量來産生(shēng)加密的值,第二個參數如果省略,PHP将會随機産生(shēng)一(yī)個參考量;第二個參數的處理,需要根據4個PHP的預定義常量,PHP會更具預定義常量的設定,對參考量進行處理,再進行加密。
CRYPT_STD_DES – 标準模式,獲取參考量的前兩位。
CRYPT_EXT_DES – 擴展模式,獲取參考量的前九位。
CRYPT_MD5 – MD5模式,參考量爲$1$開(kāi)始的一(yī)個常量CRYPT_SALT_LENGTH指定長度的字符串。
CRYPT_BLOWFISH – 河豚模式,參考量爲$2$或者$2a$開(kāi)始的一(yī)個16位長的字符串。
[php]<?php
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl');
} // 顯示 rl.3StKT.4T8M
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm');
} // 顯示 _J9..rasmBYk8r9AiWNc
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$');
} // 顯示 $1$rasmusle$rISCgZzpwk3UhDidwXvin0
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$rasmusler...........$');
} // 顯示 $2a$07$rasmuslerd............nIdrcHdxcUxWomQX9j6kvERCFjTg7Ra
?>[/php]
crc32()函數的作用是計算一(yī)個字符串的crc32多項式
[php]<?php
$checksum = crc32("Hello World!");
printf("%u\n", $checksum); // 顯示 472456355
?>[/php]
quoted_printable_decode()函數不知(zhī)道什麽意思。
convert_uuencode()函數的作用是對一(yī)個字符串進行加密,convert_uudecode()函數的作用和convert_uuencode()函數相反,可以起到解密的作用。
[php]<?php
$some_string = "test\ntext text\r\n";
echo convert_uuencode($some_string); // 顯示 0=&5S=`IT97AT('1E>'0-"@`` `
echo convert_uudecode(convert_uuencode($some_string)); //顯示 test text text
?>[/php]