質問: "/hogehoge/"; substr($str1, 1); //失敗 substr($str1, 4); //成功 ``` このように文字列「/hogehoge/」の最初のスラッシュを省くためにsubstrで切り出しを行っているのですが、 スタートを1文字目にするとスラッシュの前に文字化けした記号が入ってしまい、 スタートを4文字目にするとスラッシュが消えます。これはなぜでしょうか? ちなみに$strはfile関数で.txtファイル(UTF-8)にある文字列を1行ずつ配列へ入れ foreachで取り出した文字列なのですがここら辺が怪しいのでしょうか...
回答: 先頭に3バイトの見えない文字が付いているような結果です。 ということはおそらくその3バイトはBOMです。 最初の行の処理でだけ発生するのではありませんか?