0

所以我有这个 php 页面,您可以在其中输入一个单词,如果它在标题或描述之一中,它将显示标题和描述。现在我得到了这个:

$title='hoooi';
$description="Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
if (isset($_GET['zoek'])){
    $zoekwoord=$_GET['zoek'];

if($alles_goed==true){
    $zoekwoordreal= explode(" ", $zoekwoord);
    foreach($zoekwoordreal as $word){
        $zoek_title_en_description=$title . $description;
        if($zoekwoord==""){
        }else{
            $pos=stripos($zoek_title_en_description,$word);
        }
        if($pos!==false){
        echo $title . $description;
                    }
        }
        }
        }
    echo <<<EOT
<table>
<form action="zoek.php" method="get">
    <tr><th>Zoek: </th><td><input type="text" name="zoek" value=""></td></tr>
    <tr><th><input type="submit" value="submit"></td></tr>
</form> 
</table
EOT;

这非常有效,但前提是我输入一个单词进行搜索。现在我希望能够输入 2 个单词,如果它们匹配,则显示标题和描述。目前,当我输入例如“Lorem is”时,它没有显示标题和描述。但是当我输入“Lorem”时,它会显示标题和描述。所以这意味着当我输入 2 个单词时,$pos==false. 我应该怎么做才能使我的 php 页面可以用 2 个单词进行搜索?

4

2 回答 2

0

您可以使用explode()orpreg_split('/\s+/', ...)将查询字符串拆分为单词,然后用 a 循环它们foreach()并检查它们中的每一个。

于 2013-11-11T09:43:38.890 回答
0

记住要添加第二个关键字输入框,名称为“zoek2”

if (isset($_GET['zoek'])){
    $zoekwoord =$_GET['zoek'];
    $zoekwoord2=$_GET['zoek2'];

    if($alles_goed==true){
        $zoek_title_en_description=$title . $description;

        if($zoekwoord!="" && $zoekwoord2!=""){
            $pos=stripos($zoek_title_en_description,$zoekwoord);
            $pos2=stripos($zoek_title_en_description,$zoekwoord2);
        }
        if($pos!==false && $pos2!==false){
            echo $title . $description;
        }
    }
}

对于要搜索多个关键字并继续使用单个输入框的情况: PS:所有单词都会以 分隔SPACE,例如:“karl is great”,总单词:3。

if (isset($_GET['zoek']) && !empty($_GET['zoek']) ){
    $zoekwoords = explode(" ", $_GET['zoek']);
    $foundAll = true;

    if($alles_goed==true){
        $zoek_title_en_description=$title . $description;

        foreach( $zoekwoords as $zoekwoord ){
            $pos=stripos($zoek_title_en_description,$zoekwoord);
            if($pos===false){
                $foundAll=false;
                break; //add break to speed up
            }
        }
        if($foundAll !== false){
            echo $title . $description;
        }
    }
}
于 2013-11-11T09:45:32.527 回答