仅显示包含数组中特定单词的值

时间:2015-06-14 19:53:17

标签: php arrays json string if-statement

现在我正在研究我的json解码结果的搜索功能

我得到的代码如下:

<?php
foreach($soeg_decoded as $key => $val){
    $value = $val["Value"];
    $seotitle = $val["SEOTitle"];
    $text = $val["Text"];

echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
}
?>

我希望它只显示包含特定单词的结果,这些结果存储在名为$ searchText的变量中。

是否有任何函数或命令可以分离所有结果,并且只显示包含$ searchText中存储的单词的结果。

这样的事情:

if($value OR $seotitle OR $text contains $searchText){
    echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
}

提前致谢。

4 个答案:

答案 0 :(得分:3)

这可能是最简单的方法:

$row = '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
if (empty($searchText) || strpos($searchText, $row) !== false) {
    echo $row;
}

如果$searchText包含<td>或其他内容,如果您担心可以执行此操作,则可能会出现错误匹配:

if (count(array_filter([$value, $seotitle, $text], function($v) use ($searchText) {
    return empty($searchText) || strpos($searchText, $v) !== false;
}))) {
    echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
}

答案 1 :(得分:3)

您可以使用strpos()执行此操作: -

if(strpos($value,$searchText) !== FALSE || strpos($seotitle,$searchText) !== FALSE || strpos($text,$searchText) !== FALSE){
    echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
}

答案 2 :(得分:3)

您可以使用 strpos 字符串函数来检查$ searchText(Needle)是否为$ value / $ seotitle / $ text(Haystack)的一部分。

if ((strpos($value,$searchText) !== false) or 
(strpos($seotitle,$searchText) !== false) or 
(strpos($text,$searchText) !== false)) 
{
    echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
}

答案 3 :(得分:3)

您可以使用substr_count()

<?php
foreach($soeg_decoded as $key => $val){
    $value = $val["Value"];
    $seotitle = $val["SEOTitle"];
    $text = $val["Text"];

  if(substr_count($value, $searchText) || substr_count($seotitle, $searchText) ||  substr_count($text, $searchText)){
      echo '<tr><td>' . $value . '</td><td>' . $seotitle . '</td><td>' . $text . '</td></tr>';
  }

}
?>

阅读更多内容:

  

http://php.net/manual/en/function.substr-count.php