【问题标题】:Match one string with other which is fetched from mysql database将一个字符串与另一个从 mysql 数据库中获取的字符串匹配
【发布时间】:2015-09-19 04:04:24
【问题描述】:

我们正在尝试将一个字符串与从 mysql 数据库中获取的另一个字符串(即多个字符串)进行匹配。

<?php
$verdeel = explode(" ",strtolower('sony xperia c3 black'));

$getallen =explode(" ",strtolower('Sony Xperia c3 dual sim'));

if(array_intersect($verdeel, $getallen))
{

for($i=0;$i < count($verdeel);$i++){

    if($verdeel[$i] == $getallen[$i]){
        echo $getallen[$i];
    } else {
        echo "no match";    
    }
  }
}
?>

在上面的例子中,我们匹配输入字符串“sony xperia c3 black”与第二个字符串“Sony Xperia c3 dual sim”匹配。 第二个字符串可能不止一个 例如“索尼 Xperia c3 双卡”, “索尼 Xperia c3 双卡黑色 1GB 内存”, “索尼 Xperia c3 黑色 1GB 内存”....等

在上面的代码中,如果我们找到任何匹配关键字,那么输出就是那个关键字。 到目前为止,我们是正确的,但是我们需要从找到最大匹配关键字字符串的数据库(一个或多个)中获取的整个字符串,而不是给出匹配关键字(即具有最大匹配关键字的产品名称列表位于顶部,如降序比较产品是我们的主要目的).... 当我们从数据库中选择一个产品名称时比较产品是正确的方法吗?或者你有不同的想法来比较产品的价格。 请建议我正确的方法。 感谢您的合作。

【问题讨论】:

    标签: php mysql compare match


    【解决方案1】:

    我建议你进行这样的 SQL 查询:

    SELECT * FROM products 
    WHERE LOWER(title) LIKE '%sony%'
    or LOWER(title) LIKE '%xperia%'
    or LOWER(title) LIKE '%black%'
    

    通过这种方式,您只需从数据库中检索与“sony xperia c3 black”相似的记录

    您可以在 PHP 中以编程方式进行这样的查询:

    $query = 'SELECT * FROM products WHERE ';
    $keywords = explode(" ",strtolower('sony xperia c3 black'));
    foreach($keywords as $key => $keyword){
        if($key == 0)
            $query .='LOWER(title) LIKE %'.$keyword.'%';
        else
            $query .='or LOWER(title) LIKE %'.$keyword.'%';
    }
    

    现在假设我们运行查询,并且我们在一个数组中有类似产品的标题,我们想要对它们进行排序。 我们可以这样实现:

    //$titles is an array containing similar products title
    //$keywords is the array we made above by exploding input string
    foreach($titles as $key => $title){
       $title = strtolower($title);
       $title = explode(' ',$title);
       $matched[$key] = sizeof(array_intersect($keywords,$title));
    }
    array_multisort($matched, $titles);
    

    $titles 中的这些值根据它们与输入字符串的相似度进行排序

    array_intersect

    array_multisort

    【讨论】:

    • 感谢您的支持......我希望上面的查询能给我正确的输出,但在这种情况下,当我使用 - $final=mysql_query($query); 获取记录时,在数据库连接后而($row=mysql_fetch_array($final)); { print_r($row);在这种情况下,它给了我错误:-警告:mysql_fetch_array() 期望参数 1 是资源,在 C:\xampp\htdocs\word\custom-look\try1.php 中给出的布尔值在 $query->我们上面的查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2019-01-12
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多