我有一个奇怪的问题......
我想在日志文件中搜索。
$lines = file($file);
$sampleName = "T3173sGas";
foreach ($lines as &$line) {
if (strpos($line, $sampleName) !== false) {
echo "yes";
}
}
此代码无法正常工作,$sampleName
在{0}日志文件中为100%
。搜索仅适用于单个字符;例如"T"
或"3"
但不适用于"T3"
。
你知道为什么它不起作用吗?日志文件的编码是错误的吗?
非常感谢你的帮助!
答案 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";
}
?>