2

ログファイルを見てページに出力するphpプログラムがあります(以下のコード)。上記のWebサイトのユーザーが、を含む行を見ることができないようにしたい/. トリムを使用して特定の文字を削除できることは知っていますが、行全体を削除する方法はありますか? たとえば、「こんにちは」のようなものを残し、のようなものを削除したい/xx.xx.xx.xx connected. 削除したいすべての行には、同じ共通キー/. 上記のログファイルの人々<>の名前には が含まれているため、使用する必要がありますhtmlspecialcharacters

$file = file_get_contents('/path/to/log', true);
$file = htmlspecialchars($file);
echo nl2br($file);

ご協力いただきありがとうございます!

編集:すべての回答をありがとう、現在それらをいじっています!

EDIT2:最終コード:

<?php
$file = file_get_contents('/path/to/log', true);
// Separate by line
$lines = explode(PHP_EOL, $file);

foreach ($lines as $line) {
    if (strpos($line, '/') === false) {
        $line = htmlspecialchars($line . "\n");
        echo nl2br($line);
    }
}
?>
4

4 に答える 4

0

関数を使用しstr_replaceます - http://php.net/manual/en/function.str-replace.php。別の解決策 (特殊文字をエスケープする前) -

/* pattern /\/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\sconnected/ = /xx.xx.xx.xx connected */
/* pattern will be replaced with "newtext" */
$file = file_get_contents("/path/to/log", true);
$lines = explode("\n", $file);
foreach ($lines as $line)
  $correctline = preg_replace( '/\/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\sconnected/', 'newtext', $line );
  echo $correctline;
}
于 2013-08-04T19:19:42.877 に答える
0
<?php
    $file = file_get_contents("/path/to/log", true);
    $lines = explode("\n", $file);
    foreach ($lines AS $num => $line)
    {
        if ( strpos($line, "/") === false ) // Line doesn't contain "/"
        {
            echo htmlspecialchars($line) . "\n";
        }
    }
?>
于 2013-08-04T19:33:12.047 に答える