php 中的搜索系统出现换行错误

line brek error with search system in php

我正在开发一个系统来搜索用户在 php 文件中键入的词,使用 PHP 而没有 MySQL 但我遇到了问题。当文件中没有换行符时,系统工作得非常好。例如,如果我在包含文本 "good morning" 的文件中搜索单词 "good" 可以正常工作,但如果我在包含文本 [=22= 的文件中搜索 "good" ] (带有换行符)它不会因此列出文件。这是我的代码:
index.php

<form action="busca.php" method="get">
<input type="text" name="s"><br>
<input type="submit">
</form>

busca.php

<?php
$pesq = (isset($_GET['s'])) ? trim($_GET['s']) : '';
if (empty($pesq)) {
    echo 'Type something.';
} else {
    $index    = "index.php";
    $busca    = glob("posts/content/*.php", GLOB_BRACE);
    $lendo    = "";
    $conteudo = "";
    foreach ($busca as $item) {
        if ($item !== $index) {
            $abrir = fopen($item, "r");
            while (!feof($abrir)) {
                $lendo = fgets($abrir);
                $conteudo .= $lendo;
                $lendo .= strip_tags($lendo);
            }
            if (stristr($lendo, $pesq) == true) {
                $dados    = str_replace(".php", "", $item);
                $dados    = basename($dados);
                $result[] = "<a href=\"posts/$dados.php\">$dados</a>";
                unset($dados);
            }
            fclose($abrir);
        }
    }
    if (isset($result) && count($result) > 0) {
        $result = array_unique($result);
        echo '<ul>';
        foreach ($result as $link) {
            echo "<li>$link</li>";
        }
        echo '</ul>';
    } else {
        echo 'No results';
    }
}
?>

您对 stristr 的用法不正确。
将它与 false 进行比较,如下所示:

if (stristr($lendo, $pesq) !== false) {

如果找到一个字符串 — 函数 returns 子字符串。哪个可以转换为布尔值 truefalse,你永远不知道。如果它没有找到它 - 它 returns false - 你应该将它与唯一正确的值进行比较。

为此使用 strpos 更好。
我的变体:

foreach ($busca as $item) {
        if ($item !== $index) {
            $lendo = file_get_contents($item);
            $lendo = strip_tags($lendo);
            if (strpos($lendo, $pesq) !== false) {
                $dados    = str_replace(".php", "", basename($item));
                $result[] = "<a href=\"posts/$dados.php\">$dados</a>";
            }
        }
    }

修复换行符 - 尝试摆脱它们 像这样:

$lendo = file_get_contents($item);
$lendo = strip_tags($lendo);
$lendo = str_replace(["\r","\n"], ' ', $lendo);