【发布时间】:2016-10-13 09:29:22
【问题描述】:
我想知道是否有一种方法可以通过关键字匹配过滤结果,如果最多有 2 个关键字,结果就会显示?
很快...我想通过使用关键字 ($row['TAG']) 来做“你可能很有趣”...唯一的条件是所有关键字相似或最多相差 2 个字. TIA。
$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u,
notebook, laptop, mac, **- 10 keyword**
V $words_tag(2)=apple, air, macbook, 16ghz, i5250u, notebook, 笔记本电脑、mac、-8/10 关键字
V $words_tag(3)= mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac, -8/10 关键字
X $words_tag(4)= mjvm2ll, air, 16ghz, i5250u, notebook, laptop, mac, -7/10 关键字
我的代码:
$words_tag=$row['TAG'];
$arr = substr_count($words_tag, ",");
//$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac,
$search = $words_tag;
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(',', $search);
$words_condition = array();
$arguments = array();
$i='1';
foreach ($words as $word) {
$words_condition[] = 'TAG LIKE ?';
$arguments[] = '%'.$word.'%';
$i++;
if($i=> $arr-2) break();
}
$query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ", $words_condition)." ORDER BY ID DESC");
$query->execute($arguments);
if($query->rowCount()=='0'){
}else{
echo 'YOU MAY BE INTSETENTING...';
}
【问题讨论】:
-
对不起,我不明白你在追求什么。请提供一些示例数据、基于示例数据的预期结果以及您的查询产生的实际结果。
-
@barmar 这段代码太混乱了,像
strip_tags这样的垃圾乱七八糟,老实说,我没有看到它。与字符串'0'相比?这段代码需要一些爱。 -
嗨@shadow ...就像你可以看到我想通过使用关键字($row ['TAG'])来做“你可能很有趣”......所有关键字的唯一条件与最多 2 个词相似或不同
-
@tadman 你能给这段代码一些爱吗:)?
-
重复问题的第一段不会让我更容易理解。