0

跟踪我的程序中一个神秘错误的原因,最终我发现了 PHP 的 strripos 函数的这种意外行为:

测试代码(用 PHP 5.4.24 测试):

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

echo 'strripos: ';
var_dump(strripos(chr(128), chr(128)));

echo '<br>strrpos: ';
var_dump(strrpos(chr(128), chr(128)));

echo '<br>strpos: ';
var_dump(strpos(chr(128), chr(128)));

echo '<br>stripos: ';
var_dump(stripos(chr(128), chr(128)));

?>

它的输出:

strripos:

boolean false


strrpos:

int 0


strpos:

int 0


stripos:

int 0

当 needle 参数是 ASCII 码高于 127 的单个字节时,会发生这种情况。

我不确定这是否是一个错误。

4

0 回答 0