• ベストアンサー

英語と日本語の文章でそれぞれの文字数をカウント

英語と日本語が混ざった文章があるのですが、英語と日本語の文字数がどれだけあるのか、また、その比率をphpで調べたいと思っています。 例えば、「これは日本語Englishだ」という文章の場合、「英語は7文字、日本語は7文字。その比率は1:1」というように結果を出したいのですが、どのような方法がありますか? よろしくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.2

ああ、以下の箇所 // 比率の書き出し if($jcnt > $ecnt){ echo round($jcnt / $ecnt)." : 1"; } else if($cnt != $ecnt){ echo "1 : ".round($ecnt / $jcnt); } else{echo "- : -";} は // 比率の書き出し if($jcnt > $ecnt){ echo round($jcnt / $ecnt)." : 1"; } else if($jcnt != 0 && $ecnt != 0){ echo "1 : ".round($ecnt / $jcnt); } else{echo "- : -";} の間違いです。

gogo8999
質問者

お礼

ありがとうございました。 お礼が遅くなってしまい申し訳ありませんでした。 是非参考にさせて頂きます。

その他の回答 (1)

  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

回答がないので...。 比率は四捨五入しています。 //1:1ではなくて、100:100とかのほうが正確だと思いますが。 ちゃんとできているかどうかはご自身でお確かめ下さい。 <?php $word = "これは日本語Englishだ"; $enc = "UTF-8"; // 文字コード指定 $jcnt = 0; // 日本語の文字数を格納 $ecnt = 0; // 日本語以外の文字数を格納 // $wordに文字列があれば実行 if($word != ""){ $len = mb_strlen($word,$enc); // 調査する文字列の文字数 while($len > 0){ $len--; $thisword = mb_substr($word, $len, 1, $enc); // 1文字抜き出す // 日本語が含まれている if(preg_match("/[一-龠ぁ-んァ-ヴーa-zA-Z0-9]/u",$thisword)){ $jcnt++; } // 日本語以外 else{ $ecnt++; } } } echo "日本語(".$jcnt.") : 日本語以外(".$ecnt.")<br>"; // 比率の書き出し if($jcnt > $ecnt){ echo round($jcnt / $ecnt)." : 1"; } else if($cnt != $ecnt){ echo "1 : ".round($ecnt / $jcnt); } else{echo "- : -";} ?>

関連するQ&A

  • 英語と日本語を分けて文字カウントしたい

    英語・日本語混合のテキストデータ(元はWORD)のうち、日本語部分だけ文字数をカウントしたいと思っています。 そこで、秀丸に載せた上でタブ・スペース・改行をすべて取り除き、シェアウエア等でソートをかけ、WORDに戻して文字カウントを行うことを思いつきました。 Easysort (http://www.vector.co.jp/soft/win95/util/se057281.html)等を試しているのですが、WORDに戻すところがうまくいきません(ソート前のデータがWORDに載ってしまいます) どんな方法でも構いませんので、英語と日本語を分けて文字カウントする方法はないでしょうか?

  • 文字数を正しくカウントし、長さを整える

    現在phpでアプリを作成しているのですが、入力の際に文字数を制限したいと思っています。たとえば200文字までの入力に対し213文字入力されたとします。その場合ははじめの1文字目から200文字目を残し、のこりを破棄したいと考えています。 また、1文字のカウントの際、普通に行うと半角英数字の1文字の入力と日本語の1文字の入力では日本語が2バイトになってしまいます。そうではなくて言語に関係なく1文字として認識するようさせるにはどうしたらいいのでしょうか?宜しくお願いします。

    • ベストアンサー
    • PHP
  • Outlookで英語と日本語文章を(助けて下さい)

    取引先に転送するEmailですが英語と日本語訳文章をうって送信する前にプレビューでチェックしてみると「??????」が沢山でて日本語が表示されていません。英語のみの場合は大丈夫なのですが日本語が入ると日本語の部分だけハテナマークが出てしまいます。ツールからオプションのところでフォントを変えたことが原因なのかなと思い直してはみたもののハテナマークが出てしまいます。ご存知の方、教えて下さいませんでしょうか?宜しくお願い致します。

  • 日本語文字が英語文字になってしまった。

    日本語文字が英語文字になってしまった。 Vista IE 8 いつの間にかメニューバーとツールバーの文字が日本語文字から英語文字に替わってしまいました。 こうなったについては、IE 7をIE 8に変えたからではないかと考えますが、定かではありません。 ほかに誤操作をしたのかわかりません。 どうしたら英語文字から日本語文字に戻せるか? お手数をおかけしますが、ご教示をお願いします。

  • 日本語→英語の翻訳料

    日本語→英語の翻訳料について教えてください。 ふつうは文字数でカウントされるのですか? A4で1ページくらいだとざっといくらほどなのでしょうか。 日本文は特殊なものでなく子供用の簡単な文章です。 よろしくお願いいたします。

  • 日本語の文章を英語に

    タイトル通り、日本語の文章を英語にしてくれるようなサイトを知りませんか?

  • 英語のピリオドを,日本語の英語交じりの文章の中で,「p.」という文字で選択させるにはどうすればいいですか?

    ワード2007を使っていますが,英語のピリオドを,日本語の英語交じりの文章の中で,「p.」という文字で選択させるにはどうすればいいですか?いつも,「p。123」となってしまいます。

  • 日本語のプレゼンテーションで 英語

    今英語のプレゼンテーションを、翻訳しているのですが 日本語のプレゼンテーション中に、同意味の単語を日本語と英文字、両方が存在するは どうなのでしょうか? 問題の単語は、文字数が長い商標ぽい(30字くらい)ので、見出し等では英語で使用し 文中では日本語カタカナで記入しています。 この方が分かりやすいのかなと思い、そのようにしていますが マナー的には同なのでしょう? またこのプレゼンを日本語で論文化した時には、どのように扱えば良いのでしょう? 日本語の文中に長い英語が来るのはどうかとも思いますが、固有名詞なので このまま使用したいと言う気持ちもあります。 お手数ですが、教えていただきたく よろしくお願い致します。

  • 英語と日本語

    英語で『thin』と言う単語があります。 意味は『(本などが)薄い、(気体などが)薄い』 などです。 英語と日本語が同じものから派生したわけではないのに、日本語でも本と気体が薄い場合、『薄い』という同じ単語で英語と同じ使い方をします。 他にもこのように、英語と日本語が一語で複数の意味を持った場合、意味が共通する単語があると思います。 これは偶然なのでしょうか? 伝わりにくい文章で、すみません。 よろしくお願いします。

  • 文字数制限について

    文字数制限について教えてください。 下記のようにPHPで設定しているのですが、 全部数字を入れた場合、日本語よりもかなりオーバーしてしまいます。 バイト数が違うからだと思いますが、 日本語と同じ幅で表示する方法はありますか? $val['aaa'] = mb_strimwidth($val['aaa'], 0, 84, "...", 'UTF-8'); 現在 あああ 111 ↓ 希望 あああ 111111 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう