strtok

(PHP 4, PHP 5, PHP 7, PHP 8)

strtok標(biāo)記分割字符串

說(shuō)明

strtok(string $string, string $token): string|false

可選 token (不支持命名參數(shù)):

strtok(string $token): string|false

strtok() 將字符串 string 分割為若干子字符串,每個(gè)子字符串以 token 中的字符分割。這也就意味著,如果有個(gè)字符串是 "This is an example string", 你可以使用空格字符作為 token,將這句話分割成獨(dú)立的單詞。

注意,僅第一次調(diào)用 strtok 函數(shù)時(shí)才使用 string 參數(shù)。 隨后每次調(diào)用 strtok 都將只使用 token 參數(shù),因?yàn)樗鼤?huì)記住它在當(dāng)前字符串中的位置。 如果要重新開始分割一個(gè)新的字符串,你需要再次使用 string 參數(shù)來(lái)調(diào)用 strtok 函數(shù)來(lái)對(duì)其進(jìn)行初始化。 注意,可以在 token 參數(shù)中使用多個(gè)字符。字符串將被 token 參數(shù)中任何一個(gè)字符分割。

注意:

這個(gè)函數(shù)的行為可能與熟悉 explode() 的人期望略有不同。 首先,在解析的字符串中,兩個(gè)或多個(gè)連續(xù)的 token 的 字符被認(rèn)為是單一的分隔符。 此外,位于字符串開始或結(jié)束處的 token 將被忽略。 例如,如果使用一個(gè)字符串 ";aaa;;bbb;" ,連續(xù)調(diào)用 strtok() 并將 ";" 作為一個(gè) token 將返回字符串 "aaa" 和 "bbb",然后返回 false 。 因此,字符串將僅被拆分為兩個(gè)元素,而 explode(";", $string) 將返回一個(gè)包含 5 個(gè)元素的數(shù)組。

參數(shù)

string

被分成若干子字符串的原始字符串

token

分割 string 時(shí)使用的分界字符。

返回值

標(biāo)記后的字符串,如果沒(méi)有更多標(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)記時(shí)的反應(yīng)

<?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",""]

注釋

警告

此函數(shù)可能返回布爾值 false,但也可能返回等同于 false 的非布爾值。請(qǐng)閱讀 布爾類型章節(jié)以獲取更多信息。應(yīng)使用 === 運(yùn)算符來(lái)測(cè)試此函數(shù)的返回值。

參見(jiàn)

  • explode() - 使用一個(gè)字符串分割另一個(gè)字符串