2

这两个:

echo 'Tok: '.$tok.' Strpos: '.strpos($tok, "\"").' length: '.strlen($tok).'<br>';

还有这个:

echo 'Tok: '.$tok.' Strpos: '.strpos($tok, '"').' length: '.strlen($tok).'<br>';

产生以下输出:

Tok: "fresh Strpos: length: 11

Strpos 完全找不到双引号,它返回 false(我用 strpos() === false 检查)。有人能告诉我这里发生了什么吗?我找不到任何文件表明 strpos 无法处理双引号,为什么找不到它?我已经黔驴技穷了。

4

3 回答 3

10

您是否 1000% 确定其中的双引号$tok实际上是文字"而不是 HTML 实体?你能检查你的HTML代码吗?

于 2010-01-31T18:21:20.473 回答
3

在命令行使用 php,您的代码对我有用。

我注意到您没有指定 $tok 的内容。我还注意到您似乎正在输出到浏览器。你确定html

&quot

没有被用来代替实际的引号字符?

于 2010-01-31T18:24:09.607 回答
1

strpos($tok, '"') 在您的情况下等于 === 0,因为 $tok 中的第一个元素是双引号(“)。然后,当您打印出 0 时,您什么也得不到,因为它是布尔值 FALSE。

此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值,例如 0 或“”。请阅读有关布尔值的部分以获取更多信息。使用 === 运算符测试此函数的返回值 - http://us3.php.net/strpos

于 2010-01-31T18:25:56.107 回答