• ベストアンサー

全角(2文字)・半角(1文字)としてカウントする方法

こんばんは。 PHPで文字数をカウントする場合に、下記の例のように、全角を2文字、半角を1文字としてカウントしたい場合はどのように書けば良いでしょうか? ご存知の方、お返事頂けましたら幸いです。 例: あいうeo = 8 aiueo = 5

  • anbsd
  • お礼率85% (18/21)
  • PHP
  • 回答数2
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

ShiftJIS や EUC なら、strlen でOKです。 UTF-8 を使ってるなら、一旦 ShiftJISかEUC に変換してからstrlen print strlen(mb_convert_encoding("あいうeo", "sjis"));

anbsd
質問者

お礼

お返事ありがとうございます。 UTF8でstrlenを使うと、意図したようなカウントをしてくれなかったのですが、SJISに変換したところ、正常にカウントしてくれました。 ありがとうございました。

その他の回答 (1)

noname#108428
noname#108428
回答No.1

正規表現を用いて、 2とカウントしたい文字であると判定できたら、 文字数を格納する変数の値を++する、でokですよ。

anbsd
質問者

お礼

お返事ありがとうございます。 参考にさせて頂きます。

関連するQ&A

  • 全角半角あわせて3文字

    全角半角が混在している文字列の左から3文字を取得したい場合にいい方法はないでしょうか? mb_substr関数で第3パラメータはバイト数で指定するようです。 関数リファレンスでは「最大文字数」って表現になってます。 http://php.net/manual/ja/function.mb-substr.php 半角なら文字数=バイト数ですが、全角だと指定の半分の文字数になります。 最大だから間違ってはないですが、文字数じゃないよな‥‥っていつも思ってます。 いったん半角→全角にして、6バイト分を切り出すのはできます。 でも、英数字も全角半角混在してるので元の文字列を壊したくないのです。 mb_substrの第3パラメータを6から3まで、mb_strlenが3になるまで回すのもやってみました。 でも、なんかスマートじゃないんですよ‥‥。 なにかこう、スマートないい手はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • セル内の文字で半角2文字で1文字とカウントしたい

    openofficeを利用しています。 セル内の全角と半角が混じった文章から半角2文字で1文字とカウント 全角はそのまま1文字とカウント して文字数を数えることはできますでしょうか? LENBが利用できないので困っています。 よろしくお願いします。

  • 半角と全角の文字数カウント方法

    半角の一文字を1とカウントし、全角の一文字も1とカウントしたいのですが、うまい方法を教えてください。 例) 1111ああああ → 8文字 11111111 → 8文字 ああああああああ → 8文字 自分なりに調べて見たら以下の命令を見つけたのですが、うまく行かないのです。 $n =~ tr/\x00-\x7f/\x00-\x7f/; $nn =~ tr/\xa1-\xfe/\xa1-\xfe/; 宜しくお願いします。

    • ベストアンサー
    • Perl
  • 半角文字と全角文字の判別の仕方

    MFCです。 テキストファイルから読み込んだ文字を一定の文字数づつウィンドウに書き込もうとしています。 例えば10文字を一行として 10文字 10文字 10文字 ・ ・ ・ という感じで表示したいのですが、テキストファイルには半角文字と全角文字が混じっています。半角だけなら10バイトごとに表示すればいいと思いますが、半角も全角も一文字としてカウントしようとすると半角か全角かを判別してからカウントしなければならないと思うのですが、何か良い方法ありませんか? よろしくお願いします。

  • COUNTIF 大文字小文字、全角半角もカウント

    COUNTOIFで個数をだすのに大文字小文字、全角半角が混じっているので 両方カウントしてほしい。 =COUNTIF(sheet1!$B$3:$B100,$A1) でカウントしています。 A1 あ1 B3 あ1 B4 あ1

  • Excel2007の文字数カウント(半角0.5)

    Excel(エクセル)2007で、 ある1列のすべてのセル内の文字を「半角文字⇒0.5文字」、「全角文字⇒1文字」とカウントした場合の文字数表示をしたいのですが、方法がわかりません。 ----------------------------- たとえば、↓のように表示されるようにしたいです。 【A列 (文字)】     A1:いぬ A2:犬 A3:イヌ A4:dog ↓↓↓ 【B列 (文字数)】 B1:2 B2:1 B3:1 B4:1.5 ※「A3:イヌ」の"イヌ"は全角カタカナではなく半角カタカナなので、1(0.5×2)文字となります。 【補足】 ※極力、マクロとVBAを使わない方法を知りたいです。 ※マクロやVBAを使わなければ上記の条件を満たすカウントと文字数表示ができない場合、その方法やVBAソースが知りたいです。できれば、コマンドボタンを押すと文字数を表示する仕様にしたいです。 ※上記の【A列 (文字)】 の文字はあくまで例です。実際は、どんな文字や数字にも対応できる応用の利く仕様にしたいです。 ※上記の【A列 (文字)】が4行というのもあくまで例です。実際には、何行にでも対応できる仕様にしたいです(具体的には、時間はかかると思いますが10000行くらいまで対応できるのが理想です)。 ここまでの条件を満たす「文字数カウント」の方法、 もし分かる方がいましたらどうかよろしくおねがいします。

  • 半角・全角文字が入り乱れて、困っています。

    すみません。どなたか教えてください。 windows 98 を使っています。 wordやexel を使って、文字を入力したとき無意識のうちに (英・数・カナ)の半角と全角がどうしても入り混じってしまって、 結果的にかなり見てくれが悪くなってしまいます。 (他の人が作成した書類を見ても、ほとんど同じことが起きています。) 1.全体に半角と全角が入り混じらないように、最初から英・数の全角とカナの 半角文字が入力できないような初期設定はできないのでしょうか? 2.確定させた後、半角・全角を一括で (英数→半角、カナ→全角に)変換 できないでしょうか?   Macを使っていたときはこんな無意味な苦労をしたことがなかったのですが・・・

  • PPT ファイルの文字カウント=全角文字の数

    PPT ファイルの文字数をカウントしたいと思っています。 今のところ、ひたすら Ctrl+A でコピーして1シートずつ Word 文書に貼り付けてカウントしています・・・。 以前にこちらで、PPT ファイルの総文字数をカウントするマクロは紹介されていたのですが、全角文字数と半角文字数を区別してカウントすることって、できないのでしょうか? ネットでもいろいろ調べてみたのですが、調べ方が悪いのか、さっぱり。。。 すみませんが、よろしくお願いします。

  • 全角から半角文字へ一括変換。

    ☆はじめまして☆ ご存知であれば教えていただきたいのですが、エクセルで全角入力された数字を一括で半角変換したいのです。 また全角ひらがなで入力された文字をまずカナになおし、こちらも同様に半角文字に変換したいです。 またかな文字の”シャ”などを小文字使わずに”シヤ”と変換する方法はありますか? イメージは下記のとおりです。 <例> 123かいしゃ  とうきょうししゃ 0123456 <変換後> 123カイシャ トウキヨウシシヤ 0123456 (GOOで半角文字が掲載できない為表示が全角になってますが、上記全半角大文字ととらえてください。

  • エクセル2003で、1つのセルに全角文字、半角文字

    エクセルで文字数制限のあるセルに 全角、半角文字が混在している場合 A1 上下ABCDひだりみぎ ←対象となるセル B1全角文字数 7 C1半角文字数 4 というように対象のセルの全角文字数、半角文字数を別々のセルに表示できる方法があれば おしえてください。

専門家に質問してみよう