Поиск совпадений в строке php

373
20 июля 2017, 00:44

Допустим, есть строка:

привет меня зовут Крокодил Гена, я потерял чебурашку

Есть массив: $arr = array('Гена', 'потерял');

Как можно с помощью функции in_array() или же регулярных выражений (я не знаю как правильнее в данной ситуации) найти совпадение в данной выше строке, хотя бы с одним словом в массиве $arr?

Answer 1

Используйте функцию strpos():

<?php
$string = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$arr = array('Гена', 'потерял');
for ($i = 0; $i < count($arr); $i++) {
    if (strpos($string, $arr[$i])) 
        echo 'Слово ' . $arr[$i] . ' найдено в строке';
}

Либо можно реализовать это через регулярные выражения, функцией preg_match():

if (preg_match("/$arr[$i]/", $string)) {
    echo 'Слово ' . $arr[$i] . ' найдено в строке';
}

В вопросе указано про функцию in_array(). В таком случае, нужно разделить строку на массив, потому что данная функция работает лишь с массивами. Сделаем это через функцию preg_split(), так как в строке могут присутствовать и запятые, а в таком случае проще сделать через regex.

<?php
$string = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$string = preg_split("/[\s,]+/", $string);
$arr = array('Гена', 'потерял');
for ($i = 0; $i < count($arr); $i++) {
    if (in_array($arr[$i], $string)) 
        echo 'Слово ' . $arr[$i] . ' найдено в строке';
}

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

Answer 2

Самый изящный и, скорее всего, самый быстрый вариант провернуть такое - это сделать простенькую проверку шаблона (регулярного выражения):

<?php
$subject = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$pattern = '/'.implode('|', array('Гена', 'потерял')).'/';
$matches = array();
print_r($pattern);
echo 'Result: '.preg_match_all($pattern, $subject, $matches)."\n";
print_r($matches);
READ ALSO
Очистка формы после отправки

Очистка формы после отправки

Доброго дня! Есть некоторая форма, которая <form action='serverphp' id='cl_form' method='POST' target='_blank'>

462
function в oracle из php

function в oracle из php

Привет всем, такой вопрос как вызывая функцию oracle из php вернуть значение не стандартного типа

438
Вывод PHP кода в Twig

Вывод PHP кода в Twig

Подскажите будьте добры как переделать код

333