strtok

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

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

說明

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

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

strtok(string $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ù)組。

參數(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ù)的返回值。

參見

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