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 引数が 127 を超える ASCII コードを持つ 1 バイトの場合に発生します。

これがバグかどうかはわかりません。

4

0 に答える 0