开发者

In PHP, strpos() fails to find double quote ('"') in string

开发者 https://www.devze.com 2022-12-18 21:22 出处:网络
Both this: echo \'Tok: \'.$tok.\' Strpos: \'.strpos($tok, \"\\\"\").\' length: \'.strlen($tok).\'<br>\';

Both this:

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

And this:

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

Result in the following output:

Tok: "fresh Strpos: length: 11
开发者_运维知识库

Strpos is failing completely to find the double quote, it returns false (I checked with strpos() === false). Can someone tell me what's going on here? I can find no documentation suggesting that strpos can't handle double quotes, why isn't it finding it? I am at my wits end.


Are you 1000% sure that the double quote in $tok is actually a literal " and not a HTML entity? Can you check your HTML code?


Using php at the command line, your code works for me.

I noticed you didn't specify the content of $tok. I also noticed it lookes like you're outputting to a browser. Are you sure that the html

&quot

isn't being used instead of the actual quote character?


strpos($tok, '"') is equaling === 0 in your case since the very first element in $tok is a double-quote ("). Then when you print out 0 you get nothing because it is a boolean FALSE.

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function - http://us3.php.net/strpos

0

精彩评论

暂无评论...
验证码 换一张
取 消