こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

太郎を太と郎に分ける方法。

こんにちわ。
名前の占いをしたくて、文字を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);#郎
というのはおかしいのでしょうか?
というわけで、文字を分割したいのですが、何か手段はありますでしょうか?
ちなみにフォームから送られてくる情報は太郎といった状態で、間に/等の文字列は入っていません。
よろしくお願いします。

投稿日時 - 2009-01-16 15:00:30

QNo.4634762

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

訂正
正 文字エンコード
誤 文字コード

投稿日時 - 2009-01-16 15:19:09

ANo.2

スクリプト言語と文字コードが不明なので答えられません。
全角一文字 = 2バイト とは限りません。

# php ならば mb_substr を使う

投稿日時 - 2009-01-16 15:15:48

お礼

CGI作成で言語?はperlです。文字コードはshift-jisです。
phpではないのですが、ありがとうございました。

投稿日時 - 2009-01-30 16:54:24

ANo.1

>>$n01=substr($name,0,2);#太
>>$n02=substr($name,1,1);#郎

substr関数の仕様を読んでみよう。

確か、「バイト数」じゃね?

投稿日時 - 2009-01-16 15:09:01

お礼

バイト数のようですね。しかも全部2バイト?とは限らないみたいで。。。どうもありがとうございました。

投稿日時 - 2009-01-30 16:52:34

あなたにオススメの質問