PHP strpos()只查找单个字符,而不是整个字符串

时间:2013-04-10 09:29:13

标签: php strpos

我有一个奇怪的问题......

我想在日志文件中搜索。

$lines = file($file);

$sampleName = "T3173sGas";

foreach ($lines as &$line) {

if (strpos($line, $sampleName) !== false) {
echo "yes";
  }
}

此代码无法正常工作,$sampleName在{0}日志文件中为100%。搜索仅适用于单个字符;例如"T""3"但不适用于"T3"

你知道为什么它不起作用吗?日志文件的编码是错误的吗?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

如果你只能找到单个字符,我会假设你的日志文件是一些多字节字符集,如UTF-16。正如您已经假设的类似,下一步是查阅您尝试使用的有关字符编码的日志文件的文档/规范。

然后,您可以使用特定于字符编码的字符串函数,该包称为http://php.net/mbstring

$encoding = ... ; // encoding of logfile

if (mb_strpos($line, $sampleName, 0, $encoding) !== false) {
    echo "yes";
}

答案 1 :(得分:0)

这可能有效,它会搜索整个字符串

<?php
$filename = 'test.php';
$file = file_get_contents($filename);
$sampleName = "T3173sGas";
if(strlen(strstr($file,$sampleName))>0)
{
echo "yes"; 
}
?>