簡體   English   中英

strtok()沒有用嗎?

[英]Is strtok() useless?

php.net/strtok

直接來自文檔的示例:

$tok = strtok($string, " \n\t");

while ($tok !== false) {
    echo "Word=$tok<br />";
    $tok = strtok(" \n\t");
}

在strtok()的第二個參數中,您可以指定用於拆分的字符。 如果指定多個字符,我怎么知道strtok是由哪個字符進行拆分的?

如果我無法找出答案,這是否會使該功能完全無法用於創建解析器,詞法分析器等?

正如我們在文檔中看到的:

請注意,只有第一次調用strtok時才使用string參數。 隨后的對strtok的每次調用都只需要使用令牌即可,因為它會跟蹤令牌在當前字符串中的位置。

此功能用於在安全的基礎上標記字符串。

explode返回一個數組,其中的所有字符串均被拆分,但是此函數在每次調用中都使用定界符從字符串中返回第一個標記 在下一個調用中,它返回下一個標記... 但是您可以更改定界符! 因此您可以遍歷字符串,並按照更復雜的邏輯提取部分,例如評估先前的標記或在運行時獲取定界符等。

當然,您可以編寫一個解析器,也可以使用您知道的許多其他函數來執行解析器,但這只是第一步,您必須自己編寫所有邏輯(例如,如果您找到一個{可能直到}之前都可以標記化,但是您將必須遞歸地解析返回的字符串,依此類推)

是strtok()沒用的-不。

它對創建解析器/詞法分析器等有用嗎?不是。

如果您要解析某些內容,則不僅僅是基於某些分隔符或其他分隔符來分割字符串,還有更多的問題-例如,對嵌入式“字符串”或“其他”字符串”的處理意味着分隔符的含義取決於上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM