Нужно добавить частичное совпадение строк в цикле foreach, чтобы найти ключи массива

У меня есть этот бит кода PHP, который разбивает - тире из входящей строки. Ключ массива может иметь или не иметь - между каждым словом. Поэтому, если строка содержит пробелы или тире, строка по-прежнему соответствует ключу.

Теперь мне нужно немного расширить это, чтобы частичное совпадение находило ключ в массиве.

Вот что я до сих пор.

Мой массив

 $pages = array( 'Administrator' => array( 'network-administrator' => array('title' => 'Network '.$li_1, 'description' => 'Network '.$li_1.' '.$temp_content, 'post' => '<p>Network '.$li_1.' '.$temp_content.'.</p>'), 'database administrator' => array('title' => 'Database '.$li_1, 'description' => 'Database '.$li_1.' '.$temp_content, 'post' => '<p>Database '.$li_1.' '.$temp_content.'.</p>'), ), 'Analyst' => array( 'business systems analyst' => array('title' => 'Business Systems '.$li_2, 'description' => 'Business Systems '.$li_2.' '.$temp_content, 'post' => '<p>Business Systems '.$li_2.' '.$temp_content.'.</p>'), 'data-analyst' => array('title' => 'Data '.$li_2, 'description' => 'Data '.$li_2.' '.$temp_content, 'post' => '<p>Data '.$li_2.' '.$temp_content.'.</p>'), ), ); 

PHP foreach loop

 $t_keys = array(); foreach ($pages as $k => $arr2) { foreach (array_keys($arr2) as $a) { $new_key = str_replace("-", " ", $a); $t_keys[$new_key] = array( $k, $a ); } } $str = str_replace(array('-', ' and '), ' ', strtolower($position)); if (array_key_exists($str, $t_keys)) { $target = $pages[ $t_keys[$str][0] ][ $t_keys[$str][1] ]; } 

$t_keys[$str][0] обращается к ключевому Administrator а $t_keys[$str][1] обращается к network-administrator под-ключа.

То, что мне нужно сделать, это сопоставить входящие строки из строки запроса в URL-адресе, чтобы найти совпадения в под-ключах массива.

Пример частичных строк соответствия, которые входят в систему, – oracle database administrator . Этот ключ отсутствует в моем массиве, но oracle administrator , а также database administrator .

Итак, как я могу сопоставить строки, входящие в под-ключи в массиве, если подобные слова существуют?

Ниже приведен небольшой список входящих строк парциального соответствия, входящих в мой журнал ошибок.

 it apple css .net developer desktop .net python apple data center phone technician sql database developer jquery delphi css python pc software xml webmaster research development python programming computer technician or pc technician .net c 

в некоторых случаях вышеуказанные частичные совпадения не существуют нигде в массиве. Я просто делаю перенаправление на них. Но другие, такие как data center и python programming питоне, как пример, находятся в массиве.

Пример для строкового data center , ближайший совпадение в массиве будет data center technician а ближайшим совпадением для python programming строк python programming будет python developer .

Вся помощь ценится!

РЕДАКТИРОВАТЬ

Чтобы быть ясными, вот еще информация о частичном сопоставлении, которая будет проблемой.

да, я знаю, что некоторые матчи будут более сложными, чем другие. В моем массиве нет ключа под названием « programming но есть ключ, называемый developer поэтому строковое python programming может быть помещено в суб-ключ- python developer как это под-ключ ключа разработчика.

Другие, такие как строковый data center будут сложнее, потому что есть несколько вспомогательных ключей основных клавиш, которые имеют data center слова.

Давайте возьмем, например, computer technician or pc technician . Это уже не под-ключ в моем массиве. но есть вспомогательные ключи, называемые computer technician а также pc technician . Какой из них для частичного совпадения, если в строке существуют обе под-ключи?

Если я смогу получить что-то основное на данный момент, которое по крайней мере позаботится о некоторых из этих частичных матчей, то я на правильном пути.

EDIT 2

Вот еще один пример струнного business analyst . В моем массиве есть подтекст, называемый business systems analyst . Слово « business и « analyst – это слова в дополнительном ключе. Поэтому мне нужно создать что-то, что я могу продолжать добавлять каждый раз, когда появляется новая строка, которая не соответствует должным образом в массиве.

ИЗМЕНИТЬ 3

Подумав несколько минут, я думаю, что лучший способ – вручную добавить каждую частичную строку, которая входит в массив, и связать их с дополнительным ключом по моему выбору.

что это имеет смысл?

Поэтому мне нужно создать фрагмент php, который я продолжаю добавлять в контейнер массива с частичными строками соответствия, которые указывают на ключ в массиве. Как я могу это сделать?