11
Июн
2021

php поиск слов или словосочетания в тексте

Есть текст и input куда пользователь вводит слова или словосочетания , если такие слова или одно слово или словосочетание есть в тексте то их цвет меняется на красный. Cлово, или несколько слов записываются через пробел, если пользователь вводит словосочетания в кавычках это означает что ищется только полное словосочетания.

Если я ввожу словосочетание в кавычках то все работает . Но как сделать что бы если я ввожу слово без кавычек или несколько слов через пробел он искал их не как целое словосочетание, а как отдельные слова. Подскажите пж.

Пример https://imgur.com/a/S4bbkrj

php

<?php
 
$text = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Aut a voluptas quam, adipisci cum veritatis tenetur debitis et vero accusantium minus id quia, libero ipsam obcaecati maxime ipsa cupiditate harum modi doloribus? Voluptatem dignissimos quaerat, enim exercitationem nulla voluptatum mollitia qui facere porro velit illum blanditiis delectus fugiat iure, voluptates doloribus nesciunt aut. Facilis repudiandae maiores accusantium nemo sed rem aspernatur, minima dolorem tenetur quis facere ipsum optio porro praesentium repellat. Doloribus, tempora veritatis natus ea explicabo fugiat voluptatem nihil, assumenda numquam aperiam dolore, nesciunt corrupti sit est at quia illo ex. Debitis illum reprehenderit, molestias, maiores accusantium possimus unde pariatur praesentium autem suscipit, ducimus expedita est architecto ad deleniti. Explicabo earum reiciendis, labore eius temporibus inventore quisquam minima ab facilis? Velit amet atque et qui sapiente iusto voluptates porro rem mollitia reiciendis animi unde ipsa incidunt alias quos, sit nemo debitis odit omnis. Eum mollitia vero doloribus eaque, cupiditate sequi esse magni nulla ex, soluta, quos aut! Nisi ullam voluptatem beatae necessitatibus, perspiciatis ducimus architecto quae corporis ad neque ipsum modi voluptatibus quo itaque libero dolorem pariatur ipsam tenetur doloribus minus fuga enim, adipisci eveniet explicabo. Aut repellat eveniet at. Temporibus sed ab sint, quia quibusdam laboriosam. Sequi, eaque.";
 
$str = $_POST["str"];
 
//Находит словосочетание в кавычках
if(preg_match_all("/(\w+)/", $str)){
    $str = trim($str,'"');
    str_replace($str, '<b>'.$str.'</b>', $text);
    $text = str_replace($str,'<b>'.$str .'</b>' , $text);
}
    
 
 
 
//Этот код находит слова без кавычек, как их объединить чтобы все норм работало с кодом который выше
// $exploded = explode(" ", $str);
//     foreach($exploded as $key => $word){
//     $text = str_replace($word,'<b>'.$word .'</b>' , $text);
// }
 
 
echo $text;

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        b{
            color: red;
        }
    </style>
</head>
<body>
    <h1>Найти строку в тексте</h1>
    <form action="index.php" method="POST">
        <p>Ключевая строка: </p> 
        <input name="str" type="text">
        <button type="submit">Отправить</button>
        <p name="text" class="text">
        <?php 
            require_once "search.php";
        ?></p>
    </form>
</body>
</html>

Пример https://imgur.com/a/S4bbkrj

Источник: https://ru.stackoverflow.com/questions/1294186/php-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-%D1%81%D0%BB%D0%BE%D0%B2-%D0%B8%D0%BB%D0%B8-%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D1%81%D0%BE%D1%87%D0%B5%D1%82%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B5

Тебе может это понравится...

Добавить комментарий