sql >> データベース >  >> RDS >> Mysql

mysql&php検索の強調表示

    このコードブロック:

    //display results
    while ($row = $stmt->fetch())
    {
        $explode_criteria = explode(" ", $_GET['criteria']);
        foreach ($explode_criteria as $key)
        {
            $highlight = preg_replace("/" . $key . "/", "<span class='highlight'>" . $key . "</span>", $row['name']);
    
            echo '<td><a target="_blank" href="' . $row['url'] . '">' . $highlight . '</a></td>';
            echo '<td>' . $row['version'] . '</td>';
            echo '<td>' . $row['cat'] . '</td>';
            echo '<td>' . $row['author'] . '</td>';
    
            echo '<td>' . $row['added'] . '</td>';
            echo '<td>' . $row['auth_dept'] . '</td>';
    
            echo '<td>';
        }
    }
    

    ループは常に$row['name']を参照しています 、したがって置換は行われますが、次にループが発生すると、元の変更されていない$row['name']の次の単語が置換されます。

    これはあなたに役立つと思います:

    //display results
    while ($row = $stmt->fetch())
    {
        $explode_criteria = explode(" ", $_GET['criteria']);
        $highlight = $row['name']; // capture $row['name'] here
        foreach ($explode_criteria as $key)
        {
            // escape the user input
            $key2 = preg_quote($key, '/');
            // keep affecting $highlight
            $highlight = preg_replace("/" . $key2 . "/", "<span class='highlight'>" . $key . "</span>", $highlight);
    
            echo '<td><a target="_blank" href="' . $row['url'] . '">' . $highlight . '</a></td>';
            echo '<td>' . $row['version'] . '</td>';
            echo '<td>' . $row['cat'] . '</td>';
            echo '<td>' . $row['author'] . '</td>';
    
            echo '<td>' . $row['added'] . '</td>';
            echo '<td>' . $row['auth_dept'] . '</td>';
    
            echo '<td>';
        }
    }
    



    1. 間隔の最大解像度を決定する方法は?

    2. mysqlで単一のキーワードを持つ単一のwhere条件を使用してテーブルのすべての列を検索します

    3. リモートマシンでダンプを復元する

    4. MySQLを使用して3つのテーブルを結合する