1

奇妙な問題があります...

ログファイルを検索したいと思います。

$lines = file($file);

$sampleName = "T3173sGas";

foreach ($lines as &$line) {

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

このコードは機能していません。ログ ファイルに記録$sampleNameされています。100%検索は単一の文字に対してのみ機能します。たとえば"T"または"3"ではありません"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 に答える