以下代码为每个帖子提取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) { }
它会如何运作?
答案 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) { }