我需要在数据库中搜索文本中的单词或短语

时间:2017-03-02 23:53:36

标签: php mysqli

当一些单词都是大写而其他单词不是大写时,我遇到了问题。即使它们是大写的,我也需要找到单词或短语。

这是我的代码:

 $a = "I  have a FREE offer of leads for you and you need to CLICK HERE right now before this FREE opportunity passes you by. You can make money right away. visit our website right now and don't pass on this!";

 $result = mysqli_query($res, "SELECT sword FROM words"); 
 $myrow = mysqli_fetch_array($result);

 while ($myrow = mysqli_fetch_array($result)){
$sword = strtolower($myrow['sword']);
 if (preg_match("/$sword/", $a)) {
echo "Found $myrow[sword]!<br /><br />";
 }

 }

我在数据库中有一个单词和短语列表。它找到机会,赚钱,领导的话。但它不会找到免费优惠,免费机会,点击这里即使我有免费优惠,免费机会,点击数据库全部小写。

我能做些什么才能确保它们能够找到这些短语和单词,无论它们是全部大写,有些大写还是全部小写?

1 个答案:

答案 0 :(得分:1)

假设你实际上已经获取了数据库结果和循环的代码并且基本上做了你想要的除了区分大小写问题,你可以只更改preg_match语句并添加一个/ i标志以使其不区分大小写:

if (preg_match("/$sword/i", $a)) { // note the lowercase "i" after the slash
    echo "Found $myrow[sword]!<br /><br />";
 }

当然,您应该始终检查数据库操作的结果是否有错误。如果出现问题,mysqli_query返回 FALSE

$result = mysqli_query($res, "SELECT sword FROM words");
if (!$result) {
    die("something went wrong with the query");
}