(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — 標記分割字符串
$string
, string $token
): string|false可選 token (不支持命名參數):
$token
): string|false
strtok() 將字符串 string
分割為若干子字符串,每個(gè)子字符串以
token
中的字符分割。這也就意味著(zhù),如果有個(gè)字符串是 "This is an example string",
你可以使用空格字符作為 token
,將這句話(huà)分割成獨立的單詞。
注意,僅第一次調用 strtok 函數時(shí)才使用 string
參數。
隨后每次調用 strtok 都將只使用 token
參數,因為它會(huì )記住它在當前字符串中的位置。
如果要重新開(kāi)始分割一個(gè)新的字符串,你需要再次使用 string
參數來(lái)調用 strtok 函數來(lái)對其進(jìn)行初始化。
注意,可以在 token
參數中使用多個(gè)字符。字符串將被 token
參數中任何一個(gè)字符分割。
注意:
這個(gè)函數的行為可能與熟悉 explode() 的人期望略有不同。 首先,在解析的字符串中,兩個(gè)或多個(gè)連續的
token
的 字符被認為是單一的分隔符。 此外,位于字符串開(kāi)始或結束處的token
將被忽略。 例如,如果使用一個(gè)字符串";aaa;;bbb;"
,連續調用 strtok() 并將";"
作為一個(gè)token
將返回字符串 "aaa" 和 "bbb",然后返回false
。 因此,字符串將僅被拆分為兩個(gè)元素,而explode(";", $string)
將返回一個(gè)包含 5 個(gè)元素的數組。
string
被分成若干子字符串的原始字符串。
token
分割 string
時(shí)使用的分界字符。
標記后的字符串,如果沒(méi)有更多標記可用,則返回 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 當 strtok() 找不到標記時(shí)的反應
<?php
$first_token = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>
以上例程會(huì )輸出:
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";
以上例程會(huì )輸出:
["aaa","bbb"] ["","aaa","","bbb",""]