如何使这个搜索引擎与subsrt_count一起使用?

时间:2015-09-22 08:29:54

标签: php echo search-engine file-get-contents

所以,我一直致力于在不使用数据库的情况下制作搜索引擎。它应该做的是在网页中找到搜索到的单词并自动给它链接。这是代码:

<?php

session_start();

$searchInput = $_POST['search'];

   $inputPage1 = $_SESSION['pOneText'];
   $inputPage2 = isset($_SESSION['pTwoText']) ? $_SESSION['pTwoText'] : "";
   $inputPage3 = isset($_SESSION['pThreeText']) ? $_SESSION['pThreeText'] : ""; 

    $fUrl = file_get_contents("mDummyP.php");
    $sUrl = file_get_contents("sDummyP.php");
    $tUrl = file_get_contents("tDummyP.php");

    if (substr_count($fUrl, $searchInput) !== false) {
        echo "All results for <strong> $searchInput </strong> : <br>" ;
    } elseif (substr_count($sUrl, $searchInput) !== false) {
        echo "All results for <strong> $searchInput </strong> : <br>";
    } elseif (substr_count($tUrl, $searchInput) !== false) {
        echo "All results for <strong> $searchInput </strong> : <br>";
    } else {
        echo "No resulst for <strong> $searchInput </strong>! ";
    }

    ?>

但是,它永远不会检查单词是否确实存在,它总是返回“所有结果”。所以,我想知道是否有人知道为什么或有改进它的建议。请记住,它永远不会被专业使用,它只是为了测试我的能力。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您需要查看substr_count

的php手册
  

返回值

     

此函数返回一个整数。

因此,如果阻止它将始终进入第一个:

if (substr_count($fUrl, $searchInput) !== false) {

因为substr_count的返回值只是一个整数而且永远不会是假的 - 你的代码正在检查false的确切值和类型。

此外,除了else块之外,所有语句都只是回显完全相同的字符串,因此如果执行确实进入if或elseif块,您将看不到输出的任何区别。请参阅以下内容,以确保您走上正轨:

$searchInput = 'some';

$fUrl = 'this is test file text';
$sUrl = 'this is some other text';
$tUrl = 'extra text';

if (substr_count($fUrl, $searchInput) !== 0) {
    echo "a";
} elseif (substr_count($sUrl, $searchInput) !== 0) {
    echo "b";
} elseif (substr_count($tUrl, $searchInput) !== 0) {
    echo "c";
} else {
    echo "No resulst for <strong> $searchInput </strong>! ";
}