プロが教えるわが家の防犯対策術!

英語と日本語が混ざった文章があるのですが、英語と日本語の文字数がどれだけあるのか、また、その比率をphpで調べたいと思っています。

例えば、「これは日本語Englishだ」という文章の場合、「英語は7文字、日本語は7文字。その比率は1:1」というように結果を出したいのですが、どのような方法がありますか?

よろしくお願い致します。

A 回答 (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 "- : -";}

の間違いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/16 15:04

回答がないので...。


比率は四捨五入しています。
//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 "- : -";}
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!