PHP使用strtok()函數

PHP使用strtok()函數

與函數explode()每次都將一個字符串全部分割成若干小塊不同,strtok()函數一次只從字符串中取出一些片段(稱爲令牌)。對於一次從字符串中取出一個單詞的處理來說,strtok()函數比explode()函數的效果更好。

strtok()函數的原型如下所示:

string strtok(string input,string separator);

分隔符可以是一個字符,也可以是一個字符串,但是,需要注意的是,輸入的字符串會根據分隔符字符串中的每個字符來進行分割,而不是根據整個分隔字符串來分隔

函數strtok()的調用並不像它的函數原型中那樣簡單。爲了從字符串中得到第一個令牌,可以調用strtok()函數,並帶有兩個輸入參數:一個是要進行令牌化處理的字符串,還有一個就是分隔符。爲了 從字符串中得到令牌序列,可以只用==一個參數==——分隔符。 該函數會保持它自己的內部指針在字符串中的位置。如果想重置指針,可以重新將該字符串傳給這個函數。

strtok()函數的典型應用如下所示:

<?php

    $str = "He told me:'Hello world! but I don't have any money!'";

    echo "原字符串:<br>";
    var_dump($str);

    $token = strtok($str,"o");

    echo "使用‘o’分割字符串:" ."<br>";
    var_dump($token);

    $token = strtok($str,"oe");

    echo "使用‘oe’分割字符串:" ."<br>";
    var_dump($token);

    //重置指針,重新將該字符串傳給這個函數。
    $token = strtok($str,"oe");

    echo "使用‘oe’分割字符串的令牌序列:" ."<br>";
    echo $token ."<br>";

    while($token!=""){
        $token = strtok("oe"); //繼續使用上次的指針位置向後分割字符串
        echo    $token."<br>";
}

輸出:

原字符串:
string 'He told me:'Hello world! but I don't have any money!'' (length=53)

使用‘o’分割字符串:
string 'He t' (length=4)

使用‘oe’分割字符串:
string 'H' (length=1)

使用‘oe’分割字符串的令牌序列:
H
t
ld m
:'H
ll
w
rld! but I d
n't hav
any m
n
y!'
發佈了48 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章