- ベストアンサー
カタカナの文字列を検出する関数
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4>SJISやEUCなどでもおかなければならないのでしょうか? デフォルトは、内部文字エンコーディングで実行されるので、 PHPの内部文字コード ソースを書いている文字コード に入力された文字列のコードを変換すれば必要ないように思います。
その他の回答 (4)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3補> ウチで試したところでは function my_iskana($str){ mb_regex_encoding("UTF-8"); return mb_ereg('^([ァ-ヶ]|[ー])*$',mb_convert_kana($str,"KVA","utf-8")); } でいずれの場合もうまくいきました。 >その場合どうしたらいいでしょうか? おそらく、文字コードの問題だと思います。 取り扱う文字コードを統一することが肝要かと思います。
お礼
ありがとうございます。 mb_regex_encoding("UTF-8"); をおいたらいけました。 SJISやEUCなどでもおかなければならないのでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
mb_regex_encoding("UTF-8"); も試してみてください
お礼
ありがとうございます。 それも調べます。
補足
function my_iskana($str) { return mb_ereg('^([ァ-ヶ]|[ー])*$',mb_convert_kana($str,"KVA","utf-8")); } としましたが 「フール」 「プール」 「ブール」 はカタカナ文字列と認識されず 「ウール」 はカタカナ文字列と認識されました。 '^([ァ-ヶ]|[ー])*$', の部分が悪いのでしょうか? その場合どうしたらいいでしょうか?
- php504
- ベストアンサー率42% (926/2160)
$str=mb_convert_kana(mb_convert_kana($str,"KV"),"A"); はまとめて $str=mb_convert_kana($str,"KVA", "utf-8"); にしても大丈夫です
お礼
ありがとうございます。 まとめます。
- papillon68
- ベストアンサー率61% (42/68)
reimanさん、こんにちは。 string mb_convert_kana ( string str [, string option [, string encoding]] ) mb_convert_kana()の第3引数で文字の縁コーディングを指定できます。 参考にPHPマニュアルを貼ります。
お礼
ありがとうございます。
関連するQ&A
- 半角カタカナの入力チェックを作りたいです
入力フォームで入力された文字に対して半角カタカナかチェックをしたいです。 function CheckHalfSizeKatakana($str) { if (mb_ereg("^[ア-ン゛゜]+$",$str)) { return true; } else { return false; } } としたのですがうまくいきません。 PHP4です。
- ベストアンサー
- PHP
- 文字列の比較
いつも参考にさせて頂いています。 基本的なことなのですが、宜しくお願いします。 たとえば文字列"str"の空チェックをするとします。 -------------------以下参考ソース String str = "test"; 1. public static String isBlank(String str) { if(str == null || str.equals("")) { return true; } return false; } 2. public static String isBlank(String str) { if(str == null || str.length = 0) { return true; } return false; } ■1と2の違いって何かありますでしょうか? ■空チェックなら1と2のどちらを使うべきでしょうか? 以上宜しくお願いします。
- ベストアンサー
- Java
- 文字列のエンコードについて
例えば以下のコードで日本人がターゲットのサイトを作ったときにエンコードがutf8以外ってありますか?idなどもutf8でなんとかなるのになぜ他の文字コードは必要なのですか? //SJISに変換 $str = "私のidはrxxdtggb63332224667です。"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8"); //SJISに変換 $str = "gcdddyyghgcc.jpg"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8");
- ベストアンサー
- PHP
- 正規表現
function CheckHalfSizeKatakana($str) { $str= mb_trim(trim($str)); $pat = "^[ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン?゛゜ゝゞー-・]+$"; if (mb_ereg_match($pat, $str)) { return true; } else { return false; } } このようにして半角カタカナをチェックしようと考えています。間違っているでしょうか?教えてください。
- ベストアンサー
- PHP
- 文字コードの検出が正しいかを検証する方法
PHPの mb_detect_encoding 関数を使っているのですが、 文字エンコーディングの検出が間違っていないかを検証する為に、 以下のように、検出された文字コードに戻し、元の文字列と一致するかで、 検出された文字エンコーディングが正しかったか確認しています。 $str = file_get_contents ( $url ); $moji_code = mb_detect_encoding ( $str , "ASCII,JIS,UTF-8,eucJP-win,SJIS-win" ); $str_after = mb_convert_encoding ( $str , 'UTF-8' , $moji_code ); if ( $str !== mb_convert_encoding ( $str_after , $moji_code , 'UTF-8' ) ) { //文字化けしている可能性あり } これで、完璧でしょうか?
- ベストアンサー
- PHP
- 「checkText3」が処理されない
とあるHOWTO本を見ながら、独学でPHPを勉強中です。 サンプルプログラムを動作させようとマニュアル通りに記述してみたのですが、一部分だけが上手く処理されません。 付属CDに収められているphpファイル自体がこのような記述になっている為、マニュアル自体に間違いがあるのかな?と思うのですが、 どこがおかしいのか解らずにいます。 お分かりになる方がいれば、ご教授願えませんでしょうか? 上手く処理されないのは「//テキストチェック3.バイバイされたらバイバイを返す」の部分です。 よろしくお願い致します<(_ _)> <?php $res = ""; if(isset($_POST['text1']) == false) {$res = getAisatsu();} else{$text1 = $_POST['text1']; if($text1 == "") {$res = "え? なんていったの?";} else{$flag =false; //まずcheckTextであいさつ文をチェック $str = checkText($text1); if($str != false) {$flag = true; $res = $str; } //続いてcheckText2で悪口の対応 if($flag == false) {$str = checkText2($text1); if($str != false) {$flag = true; $res = $str; } } //最後にcheckText3でさよならの対応 if($flag == false) {$srt = checkText3($text1); if($str != false) {$flag = true; $res = $str; } } //すべてダメならテキストを分解してチェック if($flag == false) {$arr = bunkatsu($text1); foreach($arr as $str) {if(getWordCheck($str) == true) {$flag = true; $res = $str . "って、なぁに?"; break; } } } //それでもダメなら全文で聞き返す if($flag == false) {$res = delTouten($text1) . "って、なぁに?";} } } //時間によって異なるあいさつ文を返す function getAisatsu(){ $arr = array('……ね、眠い','おはよう!','こんにちは~','こんばんわ',); $d = getdate(); $t = $d['hours']; $t2 = (int)($t / 6); return $arr[$t2]; } //テキストチェック。あいさつ文があれば対応する挨拶を返す function checkText($s){ if($s == ""){return false;} $res = false; $data = array('こんにちは','こんにちわ','こんちは','こんちわ'); foreach($data as $str) {if (mb_strpos($s,$str) !== false) {$res = 'どうも、' . $str . '!'; break; } } return $res; } //テキストチェック2.悪口が書かれていたら文句をいう function checkText2($s) {if ($s ==""){return false;} $res = false; $data = array('バカ','馬鹿','あほ','アホ','阿呆'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res =$str . 'じゃないもん!'; break; } } return $res; } //テキストチェック3.バイバイされたらバイバイを返す function checkText3($s) {if ($s == ""){return false;} $res = false; $data = array('ばいばい','バイバイ','じゃあね'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res = 'それじゃ' . $str . '!'; break; } } return $res; } //句読点を削除する function delTouten($s) {$res = str_replace('。','',$s); $res = str_replace('?','',$res); $res = str_replace('!','',$res); $res = str_replace('.','',$s); $res = str_replace('?','',$res); $res = str_replace('!','',$res); return $res; } //テキストを句読点で分割し、配列として返す function bunkatsu($s) {mb_regex_encoding("sjis"); $res = mb_ereg_replace('[。、?!,.!?]','',$s); $arr = mb_split(' ',$res); return $arr; } //主語や接続詞が含まれているかを調べる function getWordCheck($s) {if ($s == ""){return false;} $res = $s; $data = array('私','わたし','僕','ぼく','俺','おれ','オレ'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res = false; break; } } return $res; } //サニタライズ function getSeftyText($s) {$res = str_replace("<","<",$s); $res = str_replace(">",">",$res); return $res; } ?>
- ベストアンサー
- PHP
- php4での文字化け
php4で以下のプログラムを実行したら、IEの設定で文字コードをどれにしても文字化けします。 文字化けしない方法はあるのでしょうか? よろしくお願いします。 <?php $str = "あいうえお"; $str = mb_convert_kana($str,"KV"); echo "$str\n"; ?>
- ベストアンサー
- PHP
- 半角カタカナ2文字を入力すると
教えてください。 フォームから受け取って、下記の、処理をしています。 「半角カタカナ2文字を入力」すると、下記の現象になります。 この場合どのようにするのか、誰か教えてください。 [プログラム] $str = mb_convert_kana($str, "KVC"); $str = mb_convert_encoding($str,"SJIS","auto"); echo $str; [例] 1文字の場合 : 半角 ス → ス 2文字の場合 : 半角 スシ → 充 3文字の場合 : 半角 スシス → スシス
- ベストアンサー
- PHP
- 関数の実行ができません
function printData($str) { print("alert($str)"); return true; } print("<td><a href=\"#\" onClick=\"alert($i);return false\">$i</a></td>\n"); 上記を参考に関数(printdata)の呼び出しをおこなったの ですがうまく呼び出しできません。 print("<td><a href=\"#\" onClick=\"new Function($this->printdata($i))\";return false\">$i</a></td>\n"); どなたかご存知でしたら教えてください。 よろしくお願い致します。
- ベストアンサー
- PHP
- javascriptの関数につきまして
javascriptの関数につきまして javascriptの関数につきましての質問です。 Daycheck()関数 function Daycheck(year, mon, day){ maxDayOfMonth = Array( 31,29,31,30,31,30,31,31,30,31,30,31 ); if (year < 1901 || 2200 < year) return false; if( mon < 1 || mon > 12 ) return false; if( day < 1 || day > maxDayOfMonth[mon-1] ) return false; if( mon != 2 ) return true; if( day < 29 ) return true; if( ( year % 4 ) == 0 && ( year % 100 ) != 0 ) return true; if( ( year % 400 ) == 0 ) return true; return false; } というサンプルソースを見たのですが、Daycheck()の中のif( mon != 2 ) return true;とは2月以外が選択されていた場合trueを返す。 つまり、2月は選択できないということでしょうか? プログラミングについて詳しい方がいらっしゃりましたらご指導お願いします。 宜しくお願い致します。
- ベストアンサー
- JavaScript
お礼
ありがとうございます。