• 締切済み

文字列の比較と取得

取得した文字列 $moji には以下のような郵便番号と住所が入っています。 111-2222 北海道 225-3535 東京 333-4545 沖縄 現在は以下の処理です。 if (preg_match(\"/北海道/\", \$moji)) { echo \"<font color=blue >寒い</font>\";} if (preg_match(\"/東京/\" , \$moji)) { echo \"<font color=green>首都</font>\";} if (preg_match(\"/沖縄/\" , \$moji)) { echo \"<font color=red >熱い</font>\";} 受け取った文字列が「東京」の時は上記から緑色の文字で「首都」と表示しています。 これを郵便番号「225-3535」で受け取った時にも同じように表示したいのですが上手くいきません。 未熟者でも解るように教えて頂ければ助かります。よろしくお願いします。

みんなの回答

  • hyter
  • ベストアンサー率73% (31/42)
回答No.2

2つのペアになっている値から構成される文字列がある。 どちらかの値が与えられた時に、対になっている値を返すようにしたい。 …ということでしょうか?? であれば、こんな感じではどうでしょうか。 $const_arr = array("111-2222" => "北海道", "225-3535" => "東京", "333-4545" => "沖縄"); $arg_value = "111-2222"; # ←適当に変えてみてください。"東京"とか"333-4545"とか。 foreach ($const_arr as $key => $val) { if ($args_value == $key) echo $val, "\n"; if ($args_value == $val) echo $key, "\n"; } unset($key, $val);

  • hyter
  • ベストアンサー率73% (31/42)
回答No.1

■複数のif文に別れてもいいのなら  : if (preg_match("/東京/" , $moji)) { echo "<font color=green>首都</font>";} if (preg_match("/225-3535/" , $moji)) { echo "<font color=green>首都</font>";}  : ■一つのif文で完結させたいのなら if (preg_match("/東京|225-3535/" , $moji)) { echo "<font color=green>首都</font>";} でいかがでしょうか。

asdfg456
質問者

補足

ご教示ありがとうございます。返信が遅くなり申し訳ございません。 そして、質問の説明を完全に間違えていました^^; 111-2222 北海道 225-3535 東京 333-4545 沖縄 上記のようなデータで「225-3535」を受けた場合に「東京」と返し、「東京」と受けた場合に「225-3535」と返すようにしたいです。再度、ご教示くださいますようお願いします。