StrPos总是返回False?

时间:2015-09-21 06:37:07

标签: php search-engine strpos

我一直在研究一个非常基本的搜索引擎。它基本上通过检查单词是否存在来操作。如果是,则返回链接。我知道大多数人会建议从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";
}

?>

当我搜索一个单词,来自任何页面的任何单词,天气存在或不存在时,它总是返回false。有谁知道为什么?

3 个答案:

答案 0 :(得分:1)

来自PHP documentation

  

警告:此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

所以函数返回整数0,因为$searchInput$inputPage1的第一个字符开始。因为它在if条件中,所需的布尔值,然后整数转换为1。转换为布尔值时,零等于false,因此执行else块。

要解决此问题,您需要使用!==运算符(不等于===):

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

答案 1 :(得分:0)

尝试使用str i pos()来匹配不区分大小写的

答案 2 :(得分:-1)

首先使用

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

并确保搜索字符串确实存在于更大的字符串中。 还要确保你正在使用&#34; false&#34;比较 : 即

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

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