StrPos 总是 returns 假?

StrPos always returns False?

我一直在研究一个非常基本的搜索引擎。它基本上通过检查单词是否存在来运行。如果是,则 returns link。我知道你们中的大多数人会建议从 phpMyAdmin 创建一个数据库,但我不记得使 mySql_Connect 命令起作用的密码。

无论如何这是代码:

<?php

session_start();

$searchInput = $_POST['search'];

var_dump($inputPage1);
var_dump($searchİnput);

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

if (strpos($inputPage1, $searchInput)) {
    echo "True";
} else {
    echo "False";
}

?>

当我搜索一个词时,任何页面上的任何词,无论它是否存在,它总是 returns 错误。有谁知道为什么?

来自PHP documentation:

Warning: This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

所以函数 returns 整数 0 因为 $searchInput$inputPage1 的第一个字符开始。由于它在 if 条件内,需要一个布尔值,因此整数会被转换为 1。当转换为布尔值时,零等于假,因此执行 else 块。

要修复它,您需要使用 !== 运算符(=== 的不等于):

if (strpos($inputPage1, $searchInput) !== false) {
    //...

尝试 stripos() 匹配不区分大小写

首先使用

打印 $_POST 和 $_SESSION 中的所有项目
echo "<pre>";
print_r($_POST);
print_r($_SESSION);

并确保搜索字符串确实存在于较大的字符串中。 还要确保您使用 "false" 进行比较: 即

$pos = strpos($biggerString,$seachString);

if($pos !== false)
{
     echo "Not found";
}