1

用于读取用户操作请求并将其解析为组件的 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 的示例是使用空格来标记每个单词,但我想不出任何字符可能不是描述的一部分。该解决方案适用于我的测试。

是否有副作用或特殊情况会失败?或者这是获得其余线路的一种完全安全且可接受的方式?

4

2 回答 2

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

这里的工作示例

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

于 2012-06-19T12:54:59.093 回答
1

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

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

顺便说一句,此建议在手册页的评论中给出。)

于 2012-06-19T13:20:45.603 回答