PHP搜索系统 - 如何使用LIKE

时间:2011-12-05 17:45:29

标签: php search

以下代码为每个帖子提取TITLE属性。我想将它与搜索短语$ f进行比较,使用类似于LIKE与SQL一起使用的方式。

<?php 

$terms = $_GET['f'];

$searchs = get_posts($args);

foreach($searchs as $search){

    $title = get_the_title($search);

然后我们需要类似的东西:

if($title is LIKE $f) {   }

它会如何运作?

3 个答案:

答案 0 :(得分:1)

从您说出这一点的方式来看,我认为无法使用实际的LIKE或全文搜索在数据库中完成。我认为您可能会使用的是正则表达式,它比SQL“LIKE”运算符提供的模式匹配更先进,但可以用于相同的目的。

PHP集成了“Perl Compatible Regular Expressions”库。请看这里:http://uk.php.net/manual/en/book.pcre.php或在线查找标准正则表达式语法的介绍。

作为一个简单的案例,您可能希望这样做:

// Compose your matching pattern
// Be sure to escape user-supplied parts
// ".*" is roughly equivalent to "%" in LIKE
// the "/i" modifier means "case insensitive"
$pattern = '/.*' . preg_quote($_GET['f']) . '.*/i';

$searches = get_posts($args);

foreach($searches as $search)
{
    $title = get_the_title($search);

    if ( preg_match($pattern, $title) )
    {
        # FOUND A MATCH!
    }
}

答案 1 :(得分:0)

您需要查找MySQL或PostgreSQL full text search。如果您计划进行“模糊”搜索或需要比简单字符串比较更多的权力,那么LIKE就不是您想要的。

答案 2 :(得分:0)

LIKE是一个MySQL关键字,你必须在如下的SQL语句中使用它:

SELECT * FROM posts WHERE title LIKE '%keyword%';

如果您想使用PHP进行搜索,可以像这样使用strpos:

if(strpos($title, $keyword) !== FALSE) {   }