直接来自文档的示例:
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
在strtok()的第二个参数中,您可以指定用于拆分的字符。 如果指定多个字符,我怎么知道strtok执行拆分的哪一个?
如果我无法找到它,是否会使这个函数对于创建解析器,词法分析器等完全没用?
答案 0 :(得分:4)
正如我们在文档中看到的那样:
请注意,只有第一次调用strtok才会使用字符串参数。 每次对strtok的后续调用都只需要使用令牌,因为它 跟踪当前字符串中的位置。
此函数用于以secuencial为基础对字符串进行标记。
explode
返回一个包含所有字符串分割的数组,此函数在每次调用中使用分隔符返回字符串中的第一个标记。在下一个调用中,它返回下一个标记... 但您可以更改分隔符!,这样您就可以迭代字符串,并按照更复杂的逻辑提取部分,也许可以评估先前的标记,或者在运行时获取分隔符等
当然你可以编写一个解析器,也可以使用你知道的许多其他函数来完成它,但这只是一个非常初始的步骤,你必须自己编写所有的逻辑(例如,如果你找到一个{
可能你可以标记直到}
,但是你必须递归地解析返回的字符串,依此类推)
答案 1 :(得分:2)
strtok()无用 - 没有。
创建解析器/词法分析器等是否有用 - 不是真的。
如果你正在解析某些问题,那么除了基于某些分隔符或其他分隔字符串之外,还有很多问题 - 例如处理嵌入的“字符串”或“其他”字符串“'意味着分隔符的含义取决于上下文。