- ベストアンサー
文字列検索(例えばindex関数)をバイト単位で行いたい
やりたいことは日本語文字列の処理で、特定の文字を切り抜きたいのですがうまくいきません。 なぜなら、文字列を切り抜くsubstr関数がバイト単位であるのに対し、文字列を検索するindexがバイト単位でおこなわれていないからです。 例: 文字列"12万3456円"から、円だけを取り除きたいとします。 $str = "12万3456円"; $index = index($str,"円"); $newStr = substr($str, 0, $index); indexは7を返すが、substrで0から7番目を切り取っても、バイト単位なのでうまくいきません。 文字列の検索をバイト単位で行う方法を教えてください。 おねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- buffalomasa
- ベストアンサー率66% (70/106)
回答No.1
お礼
すいません。あせって完全に忘れてました。 環境はubuntu8,Perl5.8.8です。 (mysqlはxampp) 実は、いろいろありまして、 あらかじめ$str = "12万3456円";というふうに宣言すればうまくいくのですが、mySQLから文字列のデータをとってきて実行した場合うまくいかない、という状況でして、それで普通にやるのをあきらめてindexとか使ってやろうとしてました。 それでここにこういった質問をしたのですが、 >最近のPerlだとベースがUTF8だから >日本語がどーのこーのとか二バイトがどーのこーのは >基本的にはない とのご指摘をいただいて、もうすこしねばってみるかと思い、今少し奮闘してたのですが、自己解決いたしました。 この質問の回答とは別物ということにはなりますが、 mySQLからとってきた文字列でうまくできない原因は、はっきりとはわかりませんが、その文字列を操作する前に 「 no utf8; 」 をいれるとうまくいきました。 ググってこの原因を詳しく調べたいと思います。 いずれにせよ、手がかりを与えてくださったことに深く感謝いたします。