(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — 標(biāo)記分割字符串
$string
, string $token
): string|false可選 token (不支持命名參數(shù)):
$token
): string|false
strtok() 將字符串 string
分割為若干子字符串,每個子字符串以
token
中的字符分割。這也就意味著,如果有個字符串是 "This is an example string",
你可以使用空格字符作為 token
,將這句話分割成獨(dú)立的單詞。
注意,僅第一次調(diào)用 strtok 函數(shù)時才使用 string
參數(shù)。
隨后每次調(diào)用 strtok 都將只使用 token
參數(shù),因?yàn)樗鼤涀∷诋?dāng)前字符串中的位置。
如果要重新開始分割一個新的字符串,你需要再次使用 string
參數(shù)來調(diào)用 strtok 函數(shù)來對其進(jìn)行初始化。
注意,可以在 token
參數(shù)中使用多個字符。字符串將被 token
參數(shù)中任何一個字符分割。
注意:
這個函數(shù)的行為可能與熟悉 explode() 的人期望略有不同。 首先,在解析的字符串中,兩個或多個連續(xù)的
token
的 字符被認(rèn)為是單一的分隔符。 此外,位于字符串開始或結(jié)束處的token
將被忽略。 例如,如果使用一個字符串";aaa;;bbb;"
,連續(xù)調(diào)用 strtok() 并將";"
作為一個token
將返回字符串 "aaa" 和 "bbb",然后返回false
。 因此,字符串將僅被拆分為兩個元素,而explode(";", $string)
將返回一個包含 5 個元素的數(shù)組。
string
被分成若干子字符串的原始字符串。
token
分割 string
時使用的分界字符。
標(biāo)記后的字符串,如果沒有更多標(biāo)記可用,則返回 false
。
示例 #1 strtok() 示例
<?php
$string = "This is\tan example\nstring";
/* 使用制表符和換行符作為分界符 */
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
?>
示例 #2 當(dāng) strtok() 找不到標(biāo)記時的反應(yīng)
<?php
$first_token = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>
以上例程會輸出:
string(9) "something" bool(false)
示例 #3 strtok() 和 explode() 的不同點(diǎn)
<?php
$string = ";aaa;;bbb;";
$parts = [];
$tok = strtok($string, ";");
while ($tok !== false) {
$parts[] = $tok;
$tok = strtok(";");
}
echo json_encode($parts),"\n";
$parts = explode(";", $string);
echo json_encode($parts),"\n";
以上例程會輸出:
["aaa","bbb"] ["","aaa","","bbb",""]
此函數(shù)可能返回布爾值
false
,但也可能返回等同于 false
的非布爾值。請閱讀 布爾類型章節(jié)以獲取更多信息。應(yīng)使用
===
運(yùn)算符來測試此函數(shù)的返回值。