php - 在 Wordpress 的搜索查询中搜索并匹配一个或多个单词

标签 php

我试图让搜索结果根据搜索中的单词显示不同的结构。

我想要的是捕捉单词 - apple, plum, tree 如果这些单词中的一些或全部被搜索到显示 div1 其他 div2。

到目前为止我尝试过的是

    $words_array = explode(' ', $_GET['s']);
    $words = 'apple plum tree';

    if(in_array($words, $words_array)) {      

         echo 'div1';
    } else {
         echo 'div2';
      }

当我搜索其中一个词或它们的组合时,这不像 return div2 那样起作用。

如果我这样做

    $words_array = explode(' ', $_GET['s']);

    if(in_array('apple', $words_array)) {      

         echo 'div1';
    } else {
         echo 'div2';
      }

搜索apple 返回正确结果div1

更新:print_r($words_array);

Array ( [0] => apple [1] => and [2] => tree

print_r($words);

Array ( [0] => apples [1] => apple [2] => tree [3] => plum )

最佳答案

in_array()函数要求第一个参数为字符串。

in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool

您正在将数组作为第一个参数传递。

这就是函数没有返回正确值的原因。 第二个参数是要查找的数组。

使用默认值 FALSE 初始化变量 $divOneFlag

请遍历$words,然后在循环中调用in_array()

如果找到单词,将其设置为 TRUE

如果变量为TRUEecho 'div1';

否则 echo 'div2';

<?php
$words_array = ['apple', 'and', 'tree'];
$words = ['apples', 'apple', 'tree', 'plum'];
$divOneFlag = FALSE;
if (! empty($words)) {
 foreach ($words as $word) {
  if (in_array($word, $words_array)) {
   $divOneFlag = TRUE;
  }
 }
}
if ($divOneFlag) {
 echo 'div1';
}
else {
 echo 'div2';
}

Working Demo:

关于php - 在 Wordpress 的搜索查询中搜索并匹配一个或多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743510/

相关文章:

php - PHPWord可以读取MSWORD吗?

php - Laravel 5.5 - 同时验证多个表单请求

php - 使用 php 打印 javascript 和 html 的问题

javascript - PHP 中 (new Date()).getTime() 的功能是什么?

php - 如何检测我所在的类别页面的 slug? (WooCommerce)

java - Android 每 1 小时启动一次 Activity 以将纬度和经度发送到 HTTP Post

php - MySQL全文搜索仅过滤匹配的单词包含结果

PHP面向对象的酒店应用程序

php - 正则表达式示例

php - mysql时间戳选择旧记录