现在我正在研究我的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>';
}
提前致谢。
答案 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>';
}
}
?>
阅读更多内容: