1

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

我想在日志文件中搜索。

$lines = file($file);

$sampleName = "T3173sGas";

foreach ($lines as &$line) {

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

此代码不起作用,$sampleName100%在日志文件中。搜索仅适用于单个字符;例如"T"or"3"但不是 for "T3"

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

非常感谢你的帮助!

4

2 回答 2

2

如果您只能找到单个字符,我会假设您的日志文件位于一些多字节字符集中,例如 UTF-16。正如您已经假设的类似,下一步是参考您尝试操作的日志文件的文档/规范,了解字符编码。

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

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

if (mb_strpos($line, $sampleName, 0, $encoding) !== false) {
    echo "yes";
}
于 2013-04-10T09:31:32.080 回答
0

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

<?php
$filename = 'test.php';
$file = file_get_contents($filename);
$sampleName = "T3173sGas";
if(strlen(strstr($file,$sampleName))>0)
{
echo "yes"; 
}
?>
于 2013-04-10T10:39:01.350 回答