strtok() php_php 字符串分割函数strtok()与explode()的区别

php strtok()函数和explode()函数都可以用来分割字符串,但二者有一些区别,相对于explode()来说,strtok()函数可以控制节奏,按需切割字串。其优点是:

1、可以一次定义多个分隔符。函数在执行时,是按单个分隔符来切割,而不是按整个分隔符,而explode则是按整个分隔串来切割的。正因此,explode可以用中文切割,而strtok则不行,会乱码。

2、在使用while或for配合strtok()遍历时,可以随时更换分隔符,也可以随时用break跳出终止切割。

示例一

演示用中文explode来切割

$string = "这是PHP论坛 论坛版块 论坛栏目 论坛H管理员 论坛会员";

$arr = explode("论坛", $string);

foreach($arr as $v) {

echo $v . "
";

}

// 这是PHP

// 版块

// 栏目

// H管理员

// 会员

?>

示例二

演示更换切割符,注意后面WHILE中不再带有“H”分隔符。而只是用空格。

$string = "这是PHP论坛 论坛版块 论坛栏目 论坛H管理员 论坛会员";

$tok = strtok($string, " H"); //空格+H

$n = 1;

while ($tok !== false) {

echo "$tok
";

$tok = strtok(" "); //空格

// $tok = strtok(" H"); //空格+H

// if($n>2)break; //可以随时跳出。

// $n++;

}

// 这是P

// P论坛

// 论坛版块

// 论坛栏目

// 论坛H管理员

// 论坛会员

?>

示例三

演示多分隔符

$string = "This is\tan example\nstring";

$tok = strtok($string, " \n\t"); #空格,换行,TAB

while ($tok !== false) {

echo "$tok
";

$tok = strtok(" \n\t");

}

// This

// is

// an

// example

// string

?>

$string = "abcde 123c4 99sadbc99b5232";

$tok = strtok($string, "bc");

while ($tok != "") {

echo "$tok
";

$tok = strtok("bc");

}

// a

// de 123

// 4 99sad

// 99

// 5232

?>

示例四

演示用for来遍历

$line = "leon\tatkinson\[email protected]";

for($token = strtok($line, "\t");$token != "";$token = strtok("\t")) {

print("token: $token
\n");

}

// token: leon

// token: atkinson

// token: [email protected]

?>

你可能感兴趣的:(strtok(),php)