相對於explode()來說,strtok()函數可以控制節奏。按需切割字串。其優點是:
1、可以一次定義多個分隔字元。函數在執行時,是按單個分隔字元來切割,而不是按整個分隔字元,而explode則是按整個分隔串來切割的。正因此,explode可以用中文切割,而strtok則不行,會亂碼。
2、在使用while或for配合strtok()遍曆時,可以隨時更換分隔字元,也可以隨時用break跳出終止切割。
樣本1:示範用中文+explode來切割
$string = "這是PHP論壇 論壇版塊 論壇欄目 論壇H管理員 論壇會員"; $arr = explode("論壇",$string); foreach($arr as $v) { echo $v."<br />"; } echo "-------------<br />"; |
返回:
這是PHP
版塊 欄目 H管理員 會員 -------------
|
樣本2:示範更換切割符,注意後面WHILE中不再帶有“H”分隔字元。而只是用空格。
$string = "這是PHP論壇 論壇版塊 論壇欄目 論壇H管理員 論壇會員"; $tok = strtok($string, " H"); //空格+H $n=1; while ($tok !== false) { echo "$tok<br />"; $tok = strtok(" "); //空格 //if($n>2)break; //可以隨時跳出。 //$n++; } echo "-------------<br />"; |
返回:
這是P P 論壇 論壇版塊 論壇欄目 論壇H管理員 論壇會員 ------------- |
樣本3:示範多分隔字元。
$string = "This is/tan example/nstring"; $tok = strtok($string, " /n/t"); #空格,換行,TAB while ($tok !== false) { echo "$tok<br />"; $tok = strtok(" /n/t"); } echo "-------------<br />"; |
返回:
This is an example string ------------- |
$string = "abcde 123c4 99sadbc99b5232"; $tok = strtok($string, "bc"); while ($tok !="") { echo "$tok<br />"; $tok = strtok("bc"); } echo "-------------<br />"; |
返回:
a de 123 4 99sad 99 5232 ------------- |
樣本4:示範用for來遍曆:
$line = "leon/tatkinson/tleon@clearink.com"; for($token = strtok($line,"/t");$token!="";$token=strtok("/t")) { print("token: $token<BR>/n"); } |
返回:
token: leon token: atkinson token: leon@clearink.com |