Как реализовать умный поиск в строке?

200
03 марта 2018, 21:30

Подскажите, можно ли как-то осуществить умный поиск в строке?

Есть фраза

$text = 'Hello, world!';

Если я буду искать совпадение по слову "Hello" - мне вернет true. А как сделать так, что если я ищу по фразе хеллоу - мне тоже вернуло true?

Answer 1

Умный, простой, понятный поиск :)

$q = 'Хеллоу world'; - ваш ключевое слово

$text = 'Hello, world!'; - ваш текст

Hello, world! - ваш результат

<?php
function translate($str) {
    $tr = array(
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
        "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
        "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
        "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
        "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
        "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
        "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"yi","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya"
    );
    return strtr($str,$tr);
}
function keywords($str) {
    $arrays = array(
        "Hello"=>"привет,приветик,хеллоу,здрасти,здравствуйте",
        "world"=>"земля,шар",
    );
    foreach ($arrays as $key => $value) {
        if(stripos($value, mb_strtolower($str)) !== false) {
            return $key;
        }
    }
}
$q = 'Хеллоу world';
$text = 'Hello, world!';
$words = explode(' ',trim($q));
$result = '';
foreach ($words as $key => $value) {
    if(stripos($text, keywords($value)) !== false) {
        $text = str_replace(keywords($value), '<b>'.keywords($value).'</b>', $text);
    }
    if(stripos($text, translate($value)) !== false) {
        $text = str_replace($value, '<b>'.$value.'</b>', $text);
    }
}
if ($text) {
    echo $text;
} else {
    echo 'Не найдено';
}
?>
Answer 2

Создайте базу слов при которых будет выводится true, и проверяйте на наличие текста в этой базе.

READ ALSO
Как сделать проверку даты?

Как сделать проверку даты?

Доброго времени суток, у меня вопрос: есть таблица:

194
PDO PHP, подготовленный запрос и регулярные выражения

PDO PHP, подготовленный запрос и регулярные выражения

передаю в функцию параметр и хочу использовать его в регулярном выражении, но этот код не работает и не выдает ошибокEсли вместо ':code%' пишу...

193
Неправильно открывается ссылка

Неправильно открывается ссылка

Здравствуйте! Есть строка:

185