strtok(null)会导致任何错误吗?

时间:2012-06-19 12:48:02

标签: php

PHP脚本,用于读入用户操作请求并将其解析为其组件。例如,SET Colour = Bluedescribe Chocolate Cake = The best cake ever!中的用户类型我这样使用:

$actionKeyword = strtok( $actionRequest, " " ); // keyword followed by space
$name = strtok( "=" ); // Then name followed by equals
$description = strtok(null); // get the rest of the string

我找不到任何关于获取其余字符串的内容。 PHP.net的例子是使用空格来标记每个单词,但没有我能想到的字符可能不是描述的一部分。这个解决方案适用于我的测试。

是否会出现副作用或特殊情况?或者这是一种非常安全和可接受的方式来获得剩下的线路?

2 个答案:

答案 0 :(得分:1)

是的,你可以这样做 - 或者只是在没有任何令牌的情况下致电strtok("") ......

$actionKeyword = strtok( "describe Chocolate Cake = The best cake ever!", " " ); // keyword followed by space
$name = strtok( "=" ); // Then name followed by equals
$description = strtok(""); // get the rest of the string

Working example here

注意:您需要修剪它,因为它包含前导空格

答案 1 :(得分:1)

现在不应该导致任何错误,因为当null解析其参数时,strtok会转换为空字符串。

但如果您明确使用strtok('')形式,那么您可能会更安全一些。它起作用的原因是strtok期望字符串化的分隔符字符列表作为标记参数。所以这里的空字符串基本上是一个空的分隔符列表。并且没有要查找的分隔符意味着要返回的整个剩余字符串。 )

顺便说一句,这个建议在手册页上给出了in comments。 )