• ベストアンサー

配列にある文字と文字列との一致を調べたい

PHPについては素人同然で このような質問を失礼します。 $hensu に入っている文字と $myword の文字(配列)とを比較して、 一致、不一致の処理を行いたいと考えています。 $myword にはNGのワードを複数入れたいので $myword = explode(",", "ああ,いい,うう"); という処理をするつもりです。 NGワードですので今後も増える可能性が ありますので。 このような形で処理する方法をお教えください。 何卒よろしくお願いします。

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

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

質問するときは二度手間になるので仕様をきちんと提示したほうがよいでしょう こんな感じでどうでしょ? <? $pattern = "/ああ|いい|うう/"; $hensu="ああほげほげ"; if(preg_match($pattern,$hensu)) print $hensu."はNG"; $hensu="ふがふがうう"; if(preg_match($pattern,$hensu)) print $hensu."はNG"; $hensu="ええぴよぴよ"; if(preg_match($pattern,$hensu)) print $hensu."はNG"; ?>

etu007
質問者

お礼

大変失礼いたしました。 おかげさまでなんとかなりそうです! ありがとうございました

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

ANo.2の方のようにpatternの文字列に組み立てておいてpreg_matchを使うのが一般的だと思いますが、そういう関数を知らなくても(あるいは正規表現に馴染みがなくても)関数リファレンスの文字列あたりを(webででも)眺めていれば「含まれる」というあたりでstrpos()くらいには行き当たりませんか。   $ng = false;   foreach ($myword as $word) {     $pos = strpos($hensu, $word);     if ($pos === 0 ) { continue; }     $ng = true;     break;     }   if ($ng) { print "「" . $hensuu . "」はNGワードです"; } 効率云々はおいといて、これでも動作はします。少々泥臭いですけど(苦笑

etu007
質問者

お礼

ありがとうございます。 「検索」や「一致」という言葉に目がいってましたので… すいません

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

in_array()かな? <? $myword = explode(",","ああ,いい,うう"); $hensu="ああ"; if(in_array($hensu,$myword)) print $hensu."はNG"; $hensu="ええ"; if(in_array($hensu,$myword)) print $hensu."はNG"; ?>

etu007
質問者

補足

うまく一致しないですね… $hensu の方は、RSSでデータを自動で受信しているため 中に何が入るかわからないんです… $hensu(中身不明)、$myword(自分で指定した配列) を比較して、自分で指定した文字が$hensuに含まれていたら OK,やNGを出す形にしたかったんです…