简化搜索关键字方法PHP

时间:2017-09-03 22:58:46

标签: php

我尝试使用文本值和html表单文本框四个变量来输出哪些变量包含哪个变量。我做了一个非常残酷的方法,我对PHP很新,所以我确信有一个更有效的方法,所以我认为最好问。这是我目前拥有的方法,但当然只有在知道变量是什么时才有效。

<?
$a = 'A = how are you today';
$b = 'B = how are you';
$c = 'C = how are';
$d = 'D = how';

if(isset($_POST["searchSub"])){
    $search = $_POST['searchTb'];

    if ($search == 'today'){
        echo 'Results: <br>'.$a; 
    }

    if ($search == 'you'){
        echo 'Results: <br>'.$a.'<br>'.$b;
    }

    if ($search == 'are'){
        echo 'Results: <br>'.$a.'<br>'.$b.'<br>'.$c;
    }

    if ($search == 'how'){
        echo 'Results: <br>'.$a.'<br>'.$b.'<br>'.$c.'<br>'.$d;
    }
}
?>

1 个答案:

答案 0 :(得分:1)

不是构建搜索表单以检查特定单词是否在搜索查询中,为什么不拆分正在搜索的值 - 那么您将知道该字符串中的每个单词。这可以通过在空格中使用 explode() 来完成:

if(isset($_POST["searchString"])) {
    $words = explode(" ", $_POST["searchString"]);
}

这允许您循环遍历字符串中的每个单词,然后检查它是否与所需的文本匹配。在以下示例中,我使用if (in_array())执行此操作:

$target = array("how", "are", "you", "today");

foreach ($words as $word) {
    if (in_array($word, $target)) {
        echo "Match: " . $word . "<br />" . PHP_EOL;
    }
}

结合起来,这看起来像是:

$target = array("how", "are", "you", "today");

if(isset($_POST["searchString"])) {
    $words = explode(" ", $_POST["searchString"]);
    foreach ($words as $word) {
        if (in_array($word, $target)) {
            echo "Match: " . $word . "<br />" . PHP_EOL;
        }
    }
}

希望这有帮助! :)