質問: PHPで半角数値なのに長さが倍になるのはなぜ?
回答: >別ファイルに記載された文字列であり、前段でfopenして値を取得 ファイルを保存したアプリが「BOM付きのUTF-8」で保存していませんか? その場合は、"309" の左側に3バイト分の 0xEFBBBF がくっ付いていると思います。ちゃんとBOMなしのUTF-8で保存するか define('BOM', chr(0xef) . chr(0xbb) . chr(0xbf)); としておいて、 if (substr($no, 0, 3) === BOM) $no = substr($no, 3); でBOMを削除してください。