php - MySQL 查询中的点 (.) 应该做什么?

标签 php mysql

我想弄清楚为什么当我在搜索中输入点 (.) 时,它会突出显示搜索结果的每个字符(它将每个字符包装在 <span class="search-highlight"></span> 中)并且它也只显示 3 张票很奇怪,因为它们中至少有一个点:

screenshot

进行实际搜索(连同变量)的查询是:

$q = mysql_real_escape_string($_GET['q']);
$query = trim(strtoupper($q));
$query = htmlentities($query, ENT_QUOTES, "UTF-8");
$construct = $is_employee==false ? "user='$userid' AND" : "";
$tickets_result = mysql_query("SELECT `id`, `subject`, `message`, `timestamp`, `user` FROM `tickets` WHERE $construct (upper(subject) LIKE '%".$query."%' OR upper(message) LIKE '%".$query."%')") or trigger_error(mysql_error());

还有我的highlight类:

class highlight
    {
        public $output_text;

        function __construct($text, $words) {
            $split_words = explode(" ", $words);
            foreach ($split_words as $word) {
                $text = preg_replace("|($word)|Ui",
                        "<span class=\"search-highlight\">$1</span>", 
                        $text);
            }
            $this->output_text = $text;
        }
    }

有谁知道简单的点 (.) 为何或如何导致此问题,是否有可能修复?

提前感谢您的帮助。

最佳答案

这里“有问题”的是 preg_replace.是一个通配符,所以它匹配任何东西。

在将输入字符串放入正则表达式之前,您可能希望对输入字符串运行 preg_quote

关于php - MySQL 查询中的点 (.) 应该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879145/

相关文章:

php - 使用 PDO 从表 mySQL 制作模型

php - Kohana 2 ORM 自定义主键生成错误

Java、MySQL、Spring 应用程序

MySQL 5.7.10 简单查询比 5.6.35 慢

mysql - Rails 迁移还是手动创建数据库?

php - 我可以强制我的 PHP C 扩展在编译时链接 pthread 吗?

php - 在 php 中解析特定的 XML URL

php - 正则表达式 int 或 float

php - 如何在 MySQL 中更新或插入具有多对多关系的行

PHP 语法 |在数组中使用变量