поиск подстроки в массиве в php - PullRequest
0 голосов
/ 11 ноября 2011

Я пытаюсь найти вхождение определенных слов в строку и сопоставить их с коротким списком в массиве. Я объясню свой вопрос на примере.

            $arrTitle = explode(" ", "Suburban Apartments");
    foreach( $arrTitle as $key => $value){
        echo "Name: $key, Age: $value <br />";
        $words = array("hotel", "apart", "hostel");
        if (in_array($value, $words)) {
            echo "Exists";
        }
    }

Я хочу сравнить часть строки в приведенном выше примере «Apartments» с массивом $ words для вхождения строки «Apart». Я надеюсь это имеет смысл. Возможно ли это вообще?

Спасибо

Ответы [ 2 ]

5 голосов
/ 11 ноября 2011

Тогда вам придется немного изменить свой код. Посмотрите на это ниже:

$arrTitle = explode(" ", "Suburban Apartments");
foreach( $arrTitle as $key => $value){
    echo "Name: $key, Age: $value <br />";
    $words = array("hotel", "apart", "hostel");
    foreach($words as $word){
        if (stripos($value, $word) !== false) {
            echo "Exists";
        }
    }
}

Обратите внимание на добавленный foreach для поиска слов и замену in_array для strpos.

Для вашей личной информации in_array проверяет, есть ли $ word в массиве как целое значение, а не то, что вы хотели. Вам нужно проверить наличие каждого слова, используя strpos или stripos (без учета регистра) ...

1 голос
/ 11 ноября 2011

Используйте регулярные выражения для соответствия тексту.

http://php.net/manual/en/function.preg-match.php

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

Убедитесь, что они не чувствительны к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...