PHP strpos返回意外结果

时间:2014-07-05 20:51:29

标签: php

我有两个字符串变量,我想测试第二个tring值中是否存在第一个字符串值,这就是我所做的:

$str1 = "Invoice_History";
$str2 = "uploadedFiles/Invoice_History_d22556.csv";//this is not a file it is just a string path

    var_dump(strpos($str1,$str2)); ==> bool(false)

结果为false,但字符串中存在字符串"Invoice_History" "uploadedFiles/Invoice_History_d22556.csv"为什么它会给出错误? 有没有办法以工作方式执行此操作?

4 个答案:

答案 0 :(得分:0)

strpos()在字符串中查找字符串,而不是文本文件中的字符串。你必须得到文件的内容才能看到它。

<?php
    $listOfFiles[0] = "uploadedFiles/Invoice_History_d22556.csv";
    $file1NamePos = "Invoice_List";
    $fileContents = file_get_contents($listOfFiles[0]); // These are the actual file contents

    if ( strpos($fileContents, $file1NamePos) !== false )
    {
        // If string exists inside the file, you'll get here
    }
?>

答案 1 :(得分:0)

strpos函数意味着“找到字符串中第一次出现子字符串的位置”

如果您在“uploadedFiles / Invoice_History_d22556.csv”字符串中搜索“Invoice_List”,则由于子字符串不存在,因此始终为false。

答案 2 :(得分:0)

$str1 = "Invoice_History";
$str2 = "uploadedFiles/Invoice_History_d22556.csv";//this is not a file it is just a string path

    var_dump(strpos($str2,$str1));

strpos是strpos(haystack,needle)所以要查找的字符串先行,然后是要查找的字符串。 (这会返回14)

答案 3 :(得分:0)

strpos - 查找字符串中第一次出现子字符串的位置。 1 例如:

$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);
//$pos = int(0) 
在您的示例中

字符串&#34; Invoice_List&#34;不属于&#34; uploadedFiles / Invoice_History_d22556.csv&#34;然后php将false返回给你。

如果您尝试使用

$listOfFiles[0] = "uploadedFiles/Invoice_History_d22556.csv";
$file1NamePos = "Invoice";
var_dump(strpos($listOfFiles[0],$file1NamePos)); //==> int(15)

这转向你int(15)。