• ベストアンサー

マルチバイトの文字列の検索方法

いつもお世話になります。 マルチバイトの文字の中から検索した文字が含まれているかどうか を調べる方法を教えて下さい。 判定結果として$_GET['hantei']から受けた値は次のようになります。 "朝昼夜" "朝昼" "昼夜" など朝・昼・夜の3文字の組み合わせの中から 朝が含まれているかどうか 昼が含まれているかどうか 夜が含まれているかどうか を検索して含まれているとTRUEを返すようにしたいのですが、 よく分かりません。どうぞ御指導下さい。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<?php $array=Array("朝昼夜","朝昼","昼夜"); foreach($array as $val){ print "「{$val}」には・・・<br>"; print " 「朝」は".(preg_match("/朝/",$val)?"含まれている":"含まれていない")."<br>"; print " 「昼」は".(preg_match("/昼/",$val)?"含まれている":"含まれていない")."<br>"; print " 「夜」は".(preg_match("/夜/",$val)?"含まれている":"含まれていない")."<br>"; } ?>

nicolemen
質問者

お礼

ありがとうございます。 うまく期待した通りの処理ができました。 感謝します。 今後ともどうぞよろしくお願いします。

その他の回答 (1)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.1

mb_ereg_match() などのmbstring関数(マルチバイト文字列関数)を利用することで対応可能です。 # なお、前提条件として、PHPの環境設定が # mbstringについて正しく設定されていることが必要です。

参考URL:
http://www.ipc.hokusei.ac.jp/~z00104/php_manual/function.mb-ereg-match.html
nicolemen
質問者

お礼

ありがとうございます。 処理のヒントを頂き、うまく処理をすることができました。 感謝致します。 これからどうぞよろしくお願いします。

関連するQ&A

  • ある時間からある時間の間に指定した時間があるかどうかを調べる方法

    いつもお世話になります。 出勤簿を作っているのですが、 出勤した時間から退勤した時間が朝か昼か夜かが判別できるように プログラムを考えたいのですが、ヒントになるような方法があれば ご指導をお願い致します。 朝は8時 昼は13時 夜は19時の時間が含まれていれば、 判定として朝、昼、夜の表示ができるようにしたいのですが、 よくわかりません。 出勤時間 退勤時間  判定 06:30 12:30    朝 06:30 14:00 朝昼 10:00 14:00 昼 12:00 20:00 昼夜 17:00 22:00 夜 こんな感じで表示する方法を御指導下さい。 PHP4 MYSQLで記述しています。

    • ベストアンサー
    • PHP
  • String変数の文字列の検索方法

    お世話になっております。 String test = AnsiString(dlgOpen->FileName).c_str(); test = ExtractFileName(test); この方法でtestに文字列”test.bin”を取得できました。このときに変数testが”test.bin”かどうかをif文などで判定したいのですが、例えばtestの中で”test.bin”という文字列を検索して合致していたらTRUEを返すような方法を教えて頂けないでしょうか。 どうぞ、よろしくお願い致します。

  • マルチバイト文字を画像に書き込みたい

    いつもお世話になっています。 画像に文字を書き込むプログラムを作成中なのですが、 日本語を書き込もうとすると文字化けを起こしてしまいます。 文字は、EUC-JPで処理するようにしています。 【index.php】にHTMLでフォームから値(文字列やフォントなど)をとり、 【a.php】で画像に文字を書き込む処理をし、 【index.php】で作成した画像を表示させるプログラムです。 マルチバイト文字を送信する際に、 $text=rawurlencode($text);  【index.php】 をし、【a.php】では、   $text=$_GET['text'];   $text=rawurldecode($text); をして、   imagettftext($im, $fontsize, 0, 12, $fontsize+8, $color, $font, $text); 書き込みを行っています。 マルチバイト文字を送信する際にこの方法が出来ない場合、他に方法があるのでしょうか?? 開発環境は、Windows XP、PHP5.2.5,Apache2.2です。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • VLOOKUPで●●を含む文字列を検索したい

    VLOOKUP関数を使って、検索値をD列、範囲をAB列にして、 B列の値段をE列に表示させたいと思っています。     A列        B列  C列     D列     E列 おいしいオレンジジュース   150 りんごジュース りんごジュース 天然果汁   200 オレンジジュース 検索範囲の文字には検索値の文字が含まれてはいるのですが、前や後ろ、もしくは前後両方に文字が追加されています。 あれこれ調べましたが、逆の条件の場合は他の関数+ワイルドカードの組み合わせでできるようでしたが、 自分がやりたいことは調べきれず、質問させていただきました。 一応、TRUE、FALSEで切り替えて検索してみたのですが、希望している結果とは違うものが出てしまいました。 (同じ結果が何度もダブって出る。データ的に1対1しかないのに) 文字列の場合のVLOOKUP関数のTRUE、FALSEの定義もよくわかりません。

  • バイナリファイル内の文字列を検索したい

    初心者で恐縮ですがよろしくお願いします。 入力された値でバイナリファイル内検索し、その値がある行を特定したいのですが、file_get_contentsしてみても歯抜けになってしまっていて、そのままの状態で文字列として取得することができません。↓でPHPはバイナリファイルも文字列として検索でいるとあったんですが・・・  http://blog.asial.co.jp/707 バイナリファイルはphpやjavascriptが該当すると認識しているんですが、正しいでしょうか?htmlゃcssファイルもバイナリファイルと言っていいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Vlookup 関数が入っているセルの値を抽出したい

    kumasanです 久しぶりに必要にかられてVBAを利用することになりました。 Excel 2002 SP3を利用しています 次のようにセル(2,18)にVlookup関数を利用してセル(M2)の値 を 物品.xlsの中に名前(集中)の中から2列目の値を選択させて います Cells(2, 18).Formula = "= VLookup(M2, 物品.xls!集中, 2, False)" 選択はできています セル(M2)の値がみつかれば例えばその値が出ています 今回は"○"を表示させています みつからない場合は、#N/Aとエラー表示されます さて、ここで、このCells(2,18)にカーソルを持っていき その値をhantei( Dim hantei As Variant)という変数に 入れようと思い下記のように記載しています   Range("R2").Select hantei = Str(Range("R2").Select) しかし、ここでhanteiの中身を表示すると セル(M2)の値がみつかっても「true」なかっても「true」と なって います この変数hanteiにより、この行の削除をするか、次の処理に進 むか 判定させたいのですが・・・ どのようにすれば、この判定ができるか教えていただけません か よろしくお願いします。 なお次のようにエラー表示なしにして「true」「false」にし ても 同じ結果でした Cells(2, 18).Formula = "= IsError(VLookup(M2, 集中物品.xls! 集中, 2, False))" よろしくお願いします。

  • VBにおける文字列の部分一致検索

    部分一致検索のシステムを作ろうと考えているのですが、途中が任意のものを含む部分一致検索が実装できないので、助言をお借りしたいです。 例えばこんなのです↓ 本文(Sentence) The apple which he points is red. フレーズ(pattern) The apple ~ is red この場合The apple ~ is red という流れのフレーズが本文に含まれているので、変数Sentenceに変数patternが含まれると判定し、true結果を示したいです。 result = "aBBBa" Like "a*a"のようにlike文が有用かなとも思ったのですが、文字列を直接入れるような形でないとできないようなので、これでは実用性に欠けてしまいます(複数のフレーズの判定ができないので) 変数に対応した形で実装したいです。 よろしくお願いします。

  • ダイエット時の食事時間について

    ダイエット時の食事時間について。仕事が夜勤なので、夜起きて昼寝る、という生活を送っています。朝昼はしっかり食べて夜は18時以降たべないようにするとよく聞くのですが、私のような昼夜が逆の生活パターンでも同様ですか?

  • Excelの文字列検索関数について

    Excel2007で、あるセルに入っている英単語が、別のセル範囲(複数セル)に入っている英文の中にあるかどうか、を調べたいのですが、関数を使って実現できるでしょうか? たとえば、 A1に"This is a pen." A2に"That is a desk" という英文があり、 B1に"bat", B2に"pen"を入れたとします。 この場合、A1~A2に"bat"は存在しないのでC1には"FALSE"が、 A1~A2に"pen"は存在するのでC2には"TRUE"が自動的に入るようにしたいのです。 (TRUE - FALSE でなくても、数字などでもかまいません) FIND関数は単一セルの中の文字列しか検索できないし、 MATCH関数はセル内容が同一でないと結果が出ないのでそのままでは使えません。 何かいい方法はないでしょうか。

  • 配列内の文字列検索をしたい

    お世話になっております、またjavascriptで詰まってしました。現在作ってるソースは以下のイメージです。 var temp= hensuu; var list = "aa,bb,cc"; //tempがaa,bb,ccの文字を含んでいたら処理 if(list.indexOf(temp)!=-1){ //ここで何番目の要素か知りたい } という処理をしているのですがif(list.indexOf(temp)!=-1)の中で「文字列(list)に存在する」だけでなく,「区切りの何番目の要素か」も知りたいんですがそういう便利な関数か方法はあるでしょうか? list.indexOf(temp)の返す値は「文字列が見つかった場所」なのでリストの順番ではないんですよね…。 for文でひとつひとつ回すしか方法は無いのでしょうか??LIST(もしくは配列)内検索関数みたいなのがあればナイスなんですが…。分かる方、ご教授頂けたらこれ幸いです。

専門家に質問してみよう