[英]Is strtok() useless?
直接來自文檔的示例:
$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.