我有一种情况,我的通配符搜索是不是真的如何我认为它应该... 这是我正在运行的MySQL查询,它将只返回整个单词...通配符搜索w/MySQL
例如。如果我输入“手机”作为搜索词将返回在它与“手机”中的所有行,但不排,“手机”(注意加“S”)
mysql_query(" SELECT * FROM posts WHERE permalink = '$permalink' AND LOWER(raw_text) LIKE '%$str%' ");
我怎样才能得到它返回搜索词的所有变体?很明显,我知道这可能会遇到问题,因为如果用户输入常见的字母,它可能会返回各种匹配,我认为我可以使这部分高级搜索选项。
ADENDUM 我已经把范围缩小到不带通配符的问题,但有什么我用返回的数据做......这是我的正则表达式,我在数据投掷。
$pattern= "/(?:[\w\"',.-]+\s*){0,5}[\"',.-]?\S*".$str."(\s|[,.!?])(\s*[A-Za-z0-9.,-]+){0,5}/";
preg_match_all($pattern, $row["raw_text"], $matches);
该正则表达式在原始数据中找不到字符串,因此我正在返回空值。一个新问题,我并不熟悉正则表达式,所以我将尽可能地将这个问题解决出来......也许我会很快抛出一个新问题!
感谢, 中号
这并不直接回答你的问题,但它可能解释你会看到它的一些奇怪的行为。 [使用mysqli_prepare()]准备的查询(http://php.net/manual/en/mysqli.prepare.php)。这个代码就像它一样,写有“SQL注入漏洞”。 –