相對於explode()來說strtok()函數可以控制節奏按需切割字串其優點是
可以一次定義多個分隔符函數在執行時是按單個分隔符來切割而不是按整個分隔符而explode則是按整個分隔串來切割的正因此explode可以用中文切割而strtok則不行會亂碼
在使用while或for配合strtok()遍歷時可以隨時更換分隔符也可以隨時用break跳出終止切割
示例演示用中文+explode來切割
$string =
這是PHP論壇 論壇版塊 論壇欄目 論壇H管理員 論壇會員
;
$arr = explode(
論壇
$string);
foreach($arr as $v)
{
echo $v
<br />
;
}
echo
<br />
;
返回
這是PHP
版塊
欄目
H管理員
會員
示例演示更換切割符注意後面WHILE中不再帶有H分隔符而只是用空格
$string =
這是PHP論壇 論壇版塊 論壇欄目 論壇H管理員 論壇會員
;
$tok = strtok($string
H
); //空格+H
$n=
;
while ($tok !== false) {
echo
$tok<br />
;
$tok = strtok(
); //空格
//if($n>
)break; //可以隨時跳出
//$n++;
}
echo
<br />
; 這是P
P 論壇
論壇版塊
論壇欄目
論壇H管理員
論壇會員
示例演示多分隔符
$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
c
sadbc
b
;
$tok = strtok($string
bc
);
while ($tok !=
) {
echo
$tok<br />
;
$tok = strtok(
bc
);
}
echo
<br />
; a
de
sad
示例演示用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
From:http://tw.wingwit.com/Article/program/PHP/201311/21293.html