LoginSignup
1
0

More than 3 years have passed since last update.

[PHP] str_pos インプット文字列を対象に配列のキーで曖昧検索する方法

Last updated at Posted at 2020-11-06

やりたいこと

私の場合はこのような配列があり

$prefs = [
  "北海道" => 3,
  "青森県" => 3,
  "岩手県" => 2,
  // ... 省略
  "宮崎県" => 3,
  "鹿児島県" => 3,
  "沖縄県" => 4
];

インプットは「東京都品川区...」のような都道府県で区切られていない文字列です。
インプットの都道府県に該当する配列の値を取得することが目的です。

方法

このように対応しました。

$res = 4; // 該当なしの場合は4を返すとする
// $prefs を1件ずつ見ていく
foreach ($prefs as $key => $value) {
  // $input(インプット文字列)内に$key(配列のキー)が存在するか
  if (strpos($input, $key) !== false) {
    // 存在したら対応する値をレスポンス用の変数にセットする
    $res = $value;
    break;
  }
}
return $res;

注意事項

  • 都道府県の配列を作る場合に「都」や「県」を省略しないこと

省略しこのようにつくってしまうと、都道府県と同じ地名が存在するため、予期せぬ結果になる可能性があります。

例えば実際にこのような地名があります。この場合、「東京都」、「千葉県」の値を取得したいのに「島根県」、「山梨県」の値を取得してしまう可能性があります。他にもありそうです。

  • 東京都足立区島根...

  • 千葉県四街道市山梨...

// NG 「都」や「県」を省略しない
$prefs = [
  "北海道" => 3,
  "青森" => 3,
  "岩手" => 2,
  // ... 省略
  "宮崎" => 3,
  "鹿児島" => 3,
  "沖縄" => 4
];

参考

PHP公式ドキュメント str_pos

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0