所以,我一直致力于在不使用数据库的情况下制作搜索引擎。它应该做的是在网页中找到搜索到的单词并自动给它链接。这是代码:
<?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>! ";
}
?>
但是,它永远不会检查单词是否确实存在,它总是返回“所有结果”。所以,我想知道是否有人知道为什么或有改进它的建议。请记住,它永远不会被专业使用,它只是为了测试我的能力。提前谢谢!
答案 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>! ";
}