- 締切済み
太郎を太と郎に分ける方法。
こんにちわ。 名前の占いをしたくて、文字を1文字1文字分解したいと思っています。(姓名判断?!) それで、 $name="$in{'message'}";#太郎など $n01=substr($name,0,2);#太 $n02=substr($name,1,1);#郎 #格納されている文字列を表示 print "$name"; print "<br>"; print "$n01"; print "<br>"; print "$n02"; としたのですが、実行結果は 太郎 太 セ となりました。 まあ、文字を使うのに、 $n01=substr($name,0,2);#太 $n02=substr($name,1,1);#郎 というのはおかしいのでしょうか? というわけで、文字を分割したいのですが、何か手段はありますでしょうか? ちなみにフォームから送られてくる情報は太郎といった状態で、間に/等の文字列は入っていません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- umota
- ベストアンサー率46% (150/324)
回答No.3
訂正 正 文字エンコード 誤 文字コード
- umota
- ベストアンサー率46% (150/324)
回答No.2
スクリプト言語と文字コードが不明なので答えられません。 全角一文字 = 2バイト とは限りません。 # php ならば mb_substr を使う
- STICKY2006
- ベストアンサー率29% (1536/5269)
回答No.1
>>$n01=substr($name,0,2);#太 >>$n02=substr($name,1,1);#郎 substr関数の仕様を読んでみよう。 確か、「バイト数」じゃね?
質問者
お礼
バイト数のようですね。しかも全部2バイト?とは限らないみたいで。。。どうもありがとうございました。
お礼
CGI作成で言語?はperlです。文字コードはshift-jisです。 phpではないのですが、ありがとうございました。