手中的PHP手冊不知道具體是哪個版本的,只知道是PHP5.1的,有94個字符串處理函數,真的是有夠多,下面開始按照從簡單到復雜的順序介紹這些函數的使用功能和使用方法:
先給出一個總表:
addcslashes
— 為字符串里面的部分字符添加反斜線轉義字符
addslashes — 用指定的方式對字符串里面的字符進行轉義
bin2hex —
將二進制數據轉換成十六進制表示
chop — rtrim() 的別名函數
chr — 返回一個字符的ASCII碼
chunk_split —
按一定的字符長度將字符串分割成小塊
convert_cyr_string — 將斯拉夫語字符轉換為別的字符
convert_uudecode —
解密一個字符串
convert_uuencode — 加密一個字符串
count_chars — 返回一個字符串里面的字符使用信息
crc32
— 計算一個字符串的crc32多項式
crypt — 單向散列加密函數
echo — 用以顯示一些內容
explode —
將一個字符串用分割符轉變為一數組形式
fprintf —
按照要求對數據進行返回,并直接寫入文檔流
get_html_translation_table — 返回可以轉換的HTML實體
hebrev —
將Hebrew編碼的字符串轉換為可視的文本
hebrevc — 將Hebrew編碼的字符串轉換為可視的文本
html_entity_decode —
htmlentities ()函數的反函數,將HTML實體轉換為字符
htmlentities —
將字符串中一些字符轉換為HTML實體
htmlspecialchars_decode —
htmlspecialchars()函數的反函數,將HTML實體轉換為字符
htmlspecialchars —
將字符串中一些字符轉換為HTML實體
implode — 將數組用特定的分割符轉變為字符串
join —
將數組轉變為字符串,implode()函數的別名
levenshtein — 計算兩個詞的差別大小
localeconv —
獲取數字相關的格式定義
ltrim — 去除字符串左側的空白或者指定的字符
md5_file — 將一個文件進行MD5算法加密
md5 —
將一個字符串進行MD5算法加密
metaphone — 判斷一個字符串的發音規則
money_format —
按照參數對數字進行格式化的輸出
nl_langinfo — 查詢語言和本地信息
nl2br — 將字符串中的換行符“\n”替換成“<br
/>”
number_format — 按照參數對數字進行格式化的輸出
ord — 將一個ASCII碼轉換為一個字符
parse_str
— 把一定格式的字符串轉變為變量和值
print — 用以輸出一個單獨的值
printf —
按照要求對數據進行顯示
quoted_printable_decode — 將一個字符串加密為一個8位的二進制字符串
quotemeta —
對若干個特定字符進行轉義
rtrim — 去除字符串右側的空白或者指定的字符
setlocale —
設置關于數字,日期等等的本地格式
sha1_file — 將一個文件進行SHA1算法加密
sha1 —
將一個字符串進行SHA1算法加密
similar_text — 比較兩個字符串,返回系統認為的相似字符個數
soundex —
判斷一個字符串的發音規則
sprintf — 按照要求對數據進行返回,但是不輸出
sscanf —
可以對字符串進行格式化
str_ireplace — 像str_replace()函數一樣匹配和替換字符串,但是不區分大小寫
str_pad —
對字符串進行兩側的補白
str_repeat — 對字符串進行重復組合
str_replace — 匹配和替換字符串
str_rot13 —
將字符串進行ROT13加密處理
str_shuffle — 對一個字符串里面的字符進行隨機排序
str_split —
將一個字符串按照字符間距分割為一個數組
str_word_count — 獲取字符串里面的英文單詞信息
strcasecmp —
對字符串進行大小比較,不區分大小寫
strchr — 通過比較返回一個字符串的部分strstr()函數的別名
strcmp —
對字符串進行大小比較
strcoll – 根據本地設置對字符串進行大小比較
strcspn —
返回字符連續非匹配長度的值
strip_tags — 去除一個字符串里面的HTML和PHP代碼
stripcslashes —
反轉義addcslashes()函數轉義處理過的字符串
stripos — 查找并返回首個匹配項的位置,匹配不區分大小寫
stripslashes
— 反轉義addslashes()函數轉義處理過的字符串
stristr — 通過比較返回一個字符串的部分,比較時不區分大小寫
strlen —
獲取一個字符串的編碼長度
strnatcasecmp — 使用自然排序法對字符串進行大小比較,不區分大小寫
strnatcmp —
使用自然排序法對字符串進行大小比較
strncasecmp — 對字符串的前N個字符進行大小比較,不區分大小寫
strncmp —
對字符串的前N個字符進行大小比較
strpbrk — 通過比較返回一個字符串的部分
strpos —
查找并返回首個匹配項的位置
strrchr — 通過從后往前比較返回一個字符串的部分
strrev —
將字符串里面的所有字母反向排列
strripos — 從后往前查找并返回首個匹配項的位置,匹配不區分大小寫
strrpos –
從后往前查找并返回首個匹配項的位置
strspn — 匹配并返回字符連續出現長度的值
strstr —
通過比較返回一個字符串的部分
strtok — 用指定的若干個字符來分割字符串
strtolower —
將字符串轉變為小寫
strtoupper –將字符串轉變為大寫
strtr — 對字符串比較替換
substr_compare —
對字符串進行截取后的比較
substr_count — 計算字符串中某字符段的出現次數
substr_replace —
對字符串中的部分字符進行替換
substr — 對字符串進行截取
trim — 去除字符串兩邊的空白或者指定的字符
ucfirst —
將所給字符串的第一個字母轉換為大寫
ucwords — 將所給字符串的每一個英文單詞的第一個字母變成大寫
vfprintf —
按照要求對數據進行返回,并直接寫入文檔流
vprintf — 按照要求對數據進行顯示
vsprintf —
按照要求對數據進行返回,但是不輸出
wordwrap —
按照一定的字符長度分割字符串
strtolower()函數把所有字符變成小寫,strtoupper()函數把所有字符變成大寫,ucfirst()函數將所給字符串的第一個字母轉換為大寫,ucwords()函數將所給字符串的每一個英文單詞的第一個字母變成大寫。
ucfirst()只處理字符串的首個字符,ucwords()只處理每個單詞的首字母(以空格來界定是否是單詞,“today!Hi”、“today.Hi”
會被認為是一個單詞),對于其余字母的大小寫狀態并不改變。
[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()函數去除字符串兩邊的空白或者指定的字符,ltrim()函數去除字符串左側的空白或者指定的字符,rtrim()函數去除字符串右側的空白或者指定的字符,chop()函數和rtrim()函數功能相同,這四個函數都不支持UFT-8中文字符。
[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()函數用以顯示一些內容,可以使用<<《What is the difference
between echo and print》 查看兩者的差別。echo() 和
print()后面的小括號,可加可不加。
[php]<?php
$temp = "都";
echo
$temp;//顯示“都”
echo
<<<END
大
家
$temp
好
嗎
?
END;//顯示“大家都好嗎?”
echo
"大家",$temp,"好!";//顯示“大家都好”
$temp = "都";
print $temp; //顯示“都”
print
<<<END
大
家
$temp
好
嗎
?
END;//顯示“大家都好嗎?”
?>[/php]
printf()函數可以按照要求對數據進行顯示,該函數的功能異常強大,即可以讓值在不同的字符格式和進制之間轉換,還可以實現字符補白(pad)和截取等功能。sprintf()函數,fprintf()函數的功能和printf()函數完全一樣,只不過sprintf()函數是返回結果而不是直接輸出,fprintf()必須用在將輸出寫入文檔流的時候。下面僅以printf()函數舉例:
在printf()函數的第一個參數中:
%
- 轉義字符(在%開始,字母結束的格式定義內部,使用“’”進行轉義)
b – 二進制格式輸出
c - 將ASCII值轉變為對應的值輸出
d –
有符號的十進制數輸出(整數)
e – 科學計數法輸出
u – 無符號的十進制數輸出(正數)
f – 浮點格式輸出(locale
aware)
F – 浮點格式輸出(non-locale aware)
o – 八進制格式輸出
s – 字符串格時輸出
x –
十六進制格式輸出(字母小寫)
X - 十六進制格式輸出(字母大寫)
[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的第一個參數還內置了類似正則的功能:
1、第一位是可選的一個“+”,這個符號只對數字格式的輸出有效,因為如果是負數的話,前面會有一個“-”,有時候會需要在正數前面加一個“+”,但是PHP默認是隱去“+”號顯示的,所以需要在前面加一個“+”輸出“+”號
2、第二位是可選的填充字符,用這個字符來起到填充空白的左右,功能類似str_pad()函數,保留字符可以用“’”轉義
3、第三位表示填充的方向,是可選的,“+”是默認值,表示在左側填充,“-”表示在右側填充
4、第四位表示填充完成后的長度,也是可選的,沒有這個參數就表示不進行填充
5、第五位可選參數,如果輸出是浮點數,可以控制小數點后面的個數,如果是輸出字符串,則可以用來截取字符串的長度,使用時為了和前面的參數區分,需要用“.”隔開
[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]
了解了上面這些之后,讓我們看printf()函數的使用方法,其實就是將接受的從第二個參數以后的所有參數一個一個的在第一個參數中需要轉換的地方輸出,如果參數次序被打亂,就需要使用“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()的功能一樣,vprintf()函數直接輸出,vsprintf()函數返回但是不輸出,vfprintf()函數直接將結果輸出到文檔流,區別就是這三個函數接受的參數都是數組形式的,而不是一個一個的變量。
這里只舉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個參數,第一個參數是輸出的數字,第二個參數表示保留幾位小數,第三個參數和第四個參數必須同時使用(就是說不能只用第三個參數,而不使用第四個參數),分別表示小數點的樣式和千分符的樣式,默認分別為“.”和“,”。
[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下面的PHP環境不支持money_format()函數,此函數的介紹以后再補充:(
sscanf()函數可以對字符串進行格式化,第一個參數表示需要處理的字符,第二個參數表示變量匹配的規則(匹配規則請參照上面的printf()函數),后面的參數可選,分別對應需要賦值的變量,如果僅僅只有2個參數,那么所有的變量值將以一個數組的形式返回。在下面的例子中,“%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()函數可以匹配和替換字符串,第一個參數表示需要匹配的項,第二個參數表示替換的項,第三個參數表示處理的字符串。第四個參數可選,將一個變量賦值為匹配的次數,前兩個參數也可以是數組形式的。str_ireplace()函數的功能和str_replace()函數類似,只不過在匹配的時候str_ireplace()函數會忽略大小寫。
[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()函數有兩種使用方法,第一種使用三個參數,替換時會將第二個參數的字符串替換為第三個參數的字符串(如果兩個字符串參數的長度不一致,則教長的那個字符串將會被截斷),第二種方法使用兩個參數,第二個參數是一個準備進行替換處理的數組。
[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()函數通過比較返回一個字符串的部分。函數有兩個參數,第一個參數表示處理的字符串,第二個參數表示匹配項,返回結果為從匹配位置開始到最后的一個字符串,如果沒有匹配,則返回false。strchr()函數是strstr()函數的別名,功能和使用方法完全一樣。strrchr()函數的功能和strstr()函數類似,區別是strrchr()函數是從后向前匹配的,stristr()函數的功能和strstr()函數一樣,但是匹配是不區分字母的大小寫。strpbrk()的功能和strstr()函數類似,是在一個字母串里面找出第一個匹配項,返回以后的結果。
[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; // 顯示
?>[/php]
strpos()函數查找并返回首個匹配項的位置,第一個參數表示處理的字符串,第二個參數表示匹配項,第三個參數可選,表示開始執行查找的位置。stripos()函數的功能和strpos()函數類似,區別是匹配的時候不會區分大小寫。strrpos()函數和strpos()函數功能類似,區別是從后往前匹配,strripos()函數的功能和strrpos()函數類似,區別是不區分大小寫。strrpos()函數在PHP4中只支持單個字母的查找,如果參數是字符串,則截取第一個字母,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()函數的作用是返回一個字符串里面的字符使用信息。第二個參數五個參數:
0 -
以所有的每個字節值作為鍵名,出現次數作為值的數組。
1 - 與 0 相同,但只列出出現次數大于零的字節值。
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()函數的第三個參數和第四個參數可選,分別表示開始匹配的位置和返回的最大值。strcspn()函數的使用方法和strspn()函數類似,但功能卻相反,返回的是第二個參數中不匹配的字符串長度。
[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,如果我負數,就表示從后往前計數,第三個參數如果是正數,表示字符串截取的長度,如果省略,則會一直截取到最后,如果是負數,則表示從后往前截取到的位置。
[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()函數的作用是計算字符串中某字符段的出現次數,第三個參數表示在字符串中開始比較的位置,省略則默認從頭開始,第四個參數表示依次比較的字符數,省略則表示一直比較到末尾。和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()函數的作用是對字符串中的部分字符進行替換,substr_replace()函數的第三個參數必選,表示需要處理字符的起始位置,負數表示從后往前計數,第四個參數可選,省略表示一直替換到最后,正數表示替換的長度,負數表示從后往前替換到的位置。
[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()函數的作用是將一個字符串轉變為一數組形式。implode()函數前兩個參數的位置是任意的,而explode()函數則不行。explode()函數第三個參數可選,省略則表示全部返回,正數表示返回的數組中單元的個數,最后一個單元包含了未處理完的字符串,負數表示返回值中將除去最后的若干個單元。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()函數的作用是用指定的若干個字符來分割字符串,此函數的功能較強大,但是使用方法比較特殊。在連續使用的時候,第一次需要說明字符串和分割符,但是第二次的時候,只要放入分割符就可以,分割符可以是多個內容,但是不能使用字符串,具體請研究下面的例子:
[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()函數的作用是將一個字符串按照字符間距分割為一個數組,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()函數的作用是按一定的字符長度將字符串分割成小塊,第二個參數可選,表示字符間距,默認為76,第三個參數可選,表示用什么字符進行分割,默認為“\r\n”。
[php]<?php
$str
= "asdasdasd";
echo chunk_split($str,3,","); // 顯示
asd,asd,asd,
?>[/php]
wordwrap()函數的作用是按照一定的字符長度分割字符串,第二個參數可選,表示按多少字符進行分割,默認為75,第三個參數可選,表示用哪個字符分割,默認為“\n”,第四個參數可選,true表示強制打破一個單詞,false表示不大破單詞,默認為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()函數的作用是獲取一個字符串的編碼長度。
[php]<?php
$text1
= "ABC";
$text2 = "中文";
echo strlen($text1); // 顯示 3
echo
strlen($text2); // 顯示
6
?>[/php]
str_word_count()函數的作用是獲取字符串里面的英文單詞信息,第二個參數可選,0表示只返回單詞的個數,1表示將找到的單詞作為一個數組返回,2表示找到的單詞和單詞所在的字符位置信息作為一個聯合數組(associative)返回,省略的默認值是0;第三個參數也是可選的,表示需要忽略的斷詞符號,默認的斷詞符號有空格,數字等等,有時候需要忽略一些。
[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平臺下實現,所以,我以后在討論。
localeconv()函數的作用是獲取數字相關的格式定義。setlocale()函數可以設置關于數字,日期等等的本地格式,相關內容較復雜,這里省略不談。這兩個函數的作用是為了解決在不同的國家地區之間,對數字,貨幣,日期等字符形式不同的表現內容而進行簡易設置的作用。
strrev()函數的作用是將字符串里面的所有字母反向排列。str_shuffle()函數的作用是對一個字符串里面的字符進行隨機排序。
[php]<?php
echo
strrev("ABC"); // 顯示 CBA
$str = 'abcdef';
echo
str_shuffle($str);
?>[/php]
str_pad()函數的作用是對字符串進行兩側的補白,第二個參數表示補白以后的長度,第三個參數可選,表示進行補白的字符串,默認為空格,第四個參數可選,表示補白的方式,有三個常量可以選擇:STR_PAD_RIGHT,STR_PAD_LEFT和STR_PAD_BOTH,分別表示右補白,左補白和兩側補白,默認值為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的時候將返回一個空字符串。
[php]<?php
echo
str_repeat("ab", 3); // 顯示
ababab
?>[/php]
chr()函數的作用是返回一個字符的ASCII碼,ord()函數的作用是將一個ASCII碼轉換為一個字符。
[php]<?php
$str
= "a";
echo ord($str); // 顯示 97
$asc2 = 97;
echo chr($asc2); //顯示
a
?>[/php]
strcmp()函數的作用是對字符串進行大小比較,第一個參數大于第二個參數時返回一個大于0的數,小于則返回一個小于0的數,等于則返回0,此函數的比較結果返回值是非常令人困惑的,因而此函數的主要用處是比較兩個字符串是否相等。strncmp()函數的作用和strcmp()函數類似,區別是strncmp()函數有第三個必選參數,用來限制進行比較的前N個字符。strcasecmp()的作用和strcmp()函數類似,區別是strcasecmp()函數忽略大小寫。strncasecmp()函數的作用和strncmp()函數類似,區別是strncasecmp()函數忽略大小寫。strnatcmp()函數的作用和strcmp()函數類似,區別是strnatcmp()函數使用自然排序法對字符串之間進行比較。strnatcasecmp()函數的作用和strnatcmp()函數類似,區別是strnatcasecmp()函數比較時不區分大小寫。strcoll()函數的作用和strcmp()函數類似,區別是strcoll()函數會根據本地環境的設置而改變比較的方式,而產生不同的結果,這里暫時跳過不討論。
[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]
上面這些函數的另一個作用是被作為回調函數的形式使用(其實也是最主要的用途所在):
[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()函數可以對字符串進行截取后的比較,第三個參數表示比較開始的起始位置,第四個參數可選,表示進行比較的長度,省略則表示一直比較到末尾,第五個參數可選,設置為true可以忽略大小寫,false表示不忽略大小寫,默認值為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()函數的作用是比較兩個字符串,返回系統認為的相似字符個數,第三個參數可選,可以對一個變量附值為相似度百分比。levenshtein()函數的作用是對字符串進行比較,并且返回兩個字符串的相似度,有三個可選參數,但是不知道如何使用。
<?
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()函數的作用是判斷一個字符串的發音規則,用4位的字符串表示。metaphone()函數的作用是判斷一個字符串的發音規則,和soundex()函數類似,但是顯示的是一個不定長的字符串。
[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()函數的作用是為字符串里面的部分字符添加反斜線轉義字符,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()函數的作用是將字符串中一些字符轉換為HTML實體,默認情況下主要包括這4個字符:“<”,“>”,“&”和“””,分別轉換為HTML實體:“<”,“>”,“&”呵“"”。htmlentities()函數的第二個可選參數可以選擇引號的轉換模式,可以選擇三個常量:ENT_COMPAT表示轉換雙引號但是保留單引號,ENT_QUOTES表示同時轉換雙引號和單引號,ENT_NOQUOTES表示兩個都不轉換,默認值為ENT_COMPAT。第三個可選參數表示所轉換字符的編碼集。htmlspecialchars_decode()函數的作用和htmlspecialchars()函數剛好相反,但是兩個函數的使用方法一樣。
[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《已支持字符集》部分),所以使用時要注意加上第三個參數。html_entity_decode()函數的作用和htmlentities()函數正好相反,但是用法完全一樣,使用時也要注意用到第三個參數。
<meta
http-equiv="Content-Type" c />
[php]<?php
$str = "<a
href='test'>中文</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'>中文</a>
?>[/php]
get_html_translation_table()函數的作用是返回可以轉換的HTML實體,算是一個比較有意思,也是有趣的工具函數。get_html_translation_table()函數有兩個常量參數,第一個參數表示所選擇顯示哪種轉換模式下的內容,HTML_ENTITIES表示大范圍的htmlentities()函數所用到的轉換內容,HTML_SPECIALCHARS表示小范圍的htmlspecialchars()函數所用到的轉換內容,第二個參數的三種模式ENT_COMPAT,ENT_QUOTES,ENT_NOQUOTES的作用,可以查看htmlspecialchars()函數里面的介紹。
[php]<?php
print_r(get_html_translation_table(HTML_SPECIALCHARS,ENT_QUOTES));
?>[/php]
/*
顯示
Array
(
["] => "
['] => '
[<]
=> <
[>] => >
[&] =>
&
)
*/
nl2br()函數的作用是將字符串中的換行符“\n”替換成“<br
/>”。
[php]<?php
echo nl2br("foo isn't\n bar"); // 顯示(源代碼里面) foo
isn't<br />
bar
?>[/php]
strip_tags()函數的作用是去除一個字符串里面的HTML和PHP代碼(其實好像就是去掉“<”開始“>”結尾的字符串,無所謂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()函數的作用是把一定格式的字符串轉變為變量和值,字符串的格式和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函數的第二個參數用法相同,可以設定每行的顯示字符數,行末不會強制打斷一個單詞。
convert_cyr_string()函數的作用是將斯拉夫語字符轉換為別的字符。
bin2hex()函數的作用是將二進制數據轉換成十六進制的數據。
str_rot13函數的作用是將字符串進行ROT13加密處理,方法是將所有字符移動13個字母位置,因為英文一共是26個字母,所以該函數的加密解密可以使用同一個函數。
[php]<?php
echo
str_rot13('str_rot13'); // 顯示 fge_ebg13
echo
str_rot13(str_rot13('str_rot13')); // 顯示
str_rot13
?>[/php]
md5()函數的作用是將一個字符串進行MD5算法加密,返回一個32位的16位字符串,第二個參數如果設置為true,將會返回一個16位的2進制字符串。md5_file()函數的作用是對文件進行MD5加密,使用方式和md5()函數相同。
[php]<?php
echo
md5('apple'); //顯示 1f3870be274f6c49b3e31a0c6728957f
echo bin2hex(md5('apple',
true)); //顯示
1f3870be274f6c49b3e31a0c6728957f
?>[/php]
sha1()函數的作用是將一個字符串進行SHA1算法加密,返回一個40位的16位字符串,第二個參數如果設置為true,將會返回一個20位的2進制字符串。sha1_file()函數的作用是對文件進行SHA1加密,使用方式和sha1()函數相同。
[php]<?php
$str
= 'apple';
echo sha1('apple'); //顯示
d0be2dc421be4fcd0172e5afceea3970e2f3d940
echo bin2hex(sha1('apple', true));
//顯示
d0be2dc421be4fcd0172e5afceea3970e2f3d940
?>[/php]
crypt()函數的作用是對一個字符串進行散列處理,返回一個加密后的字符串。第二個可選參數是一個加密參考量,crypt()函數會根據這個量來產生加密的值,第二個參數如果省略,PHP將會隨機產生一個參考量;第二個參數的處理,需要根據4個PHP的預定義常量,PHP會更具預定義常量的設定,對參考量進行處理,再進行加密。
CRYPT_STD_DES
– 標準模式,獲取參考量的前兩位。
CRYPT_EXT_DES – 擴展模式,獲取參考量的前九位。
CRYPT_MD5 –
MD5模式,參考量為$1$開始的一個常量CRYPT_SALT_LENGTH指定長度的字符串。
CRYPT_BLOWFISH –
河豚模式,參考量為$2$或者$2a$開始的一個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()函數的作用是計算一個字符串的crc32多項式
[php]<?php
$checksum
= crc32("Hello World!");
printf("%u\n", $checksum); // 顯示
472456355
?>[/php]
quoted_printable_decode()函數不知道什么意思。
convert_uuencode()函數的作用是對一個字符串進行加密,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]