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";
}
我一直在研究一个非常基本的搜索引擎。它基本上通过检查单词是否存在来运行。如果是,则 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";
}