Bei der Verarbeitung von Protokolldateien stoßen wir häufig auf Situationen, in denen vertrauliche Informationen desensibilisiert werden müssen, z.
PHP bietet eine Vielzahl von String-Verarbeitungsfunktionen, und MB_Eregi_Replace ist eine Multi-Byte-Safe-Funktion, die den regelmäßigen Ausdrucksersatz unterstützt und Unicode-Zeichensätze unterstützt.
In diesem Artikel wird erläutert, wie Sie mit mb_eregi_replace verwendet werden, um IP -Adressen und Token -Zeichenfolgen in Protokollinhalten zu finden und zu ersetzen.
Angenommen, wir haben das folgende Protokoll -Snippet:
[2025-05-27 10:00:00] User login from 192.168.1.100 with token abc123xyz
[2025-05-27 10:05:00] Failed login from 10.0.0.5 with token 9f8d7e6c5b
Wir möchten die IP -Adresse und das Token darin durch [redacted_ip] und [redacted_token] ersetzen.
Die Funktion mb_eregi_replace von PHP wird wie folgt verwendet:
string mb_eregi_replace ( string $pattern , string $replace , string $string [, string $option = "msr" ] )
Hier ist ein vollständiges Beispielskript für die Verarbeitung von Protokollinhalten:
<?php
// Simulieren Sie das Lesen von Protokollinhalten
$log = <<<LOG
[2025-05-27 10:00:00] User login from 192.168.1.100 with token abc123xyz
[2025-05-27 10:05:00] Failed login from 10.0.0.5 with token 9f8d7e6c5b
LOG;
// Regelmäßiges Match IPv4 Adresse
$pattern_ip = '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b';
// Regelmäßiges Match token(Angenommen, die Länge besteht aus Buchstaben und Zahlen 8 ankommen 32)
$pattern_token = '\b[a-zA-Z0-9]{8,32}\b';
// ersetzen IP Adresse
$log = mb_eregi_replace($pattern_ip, '[REDACTED_IP]', $log);
// ersetzen token,Achten Sie darauf, die Zahlen im Zeitstempel versehentlich zu verletzen
$log = mb_eregi_replace('with token ' . $pattern_token, 'with token [REDACTED_TOKEN]', $log);
// Ausgangsergebnis
echo nl2br(htmlspecialchars($log));
?>
Die Ausgabe sieht so aus:
[2025-05-27 10:00:00] User login from [REDACTED_IP] with token [REDACTED_TOKEN]
[2025-05-27 10:05:00] Failed login from [REDACTED_IP] with token [REDACTED_TOKEN]
In den tatsächlichen Projekten arbeiten wir normalerweise nicht direkt in der ursprünglichen Protokolldatei, sondern verarbeiten den Inhalt durch den Lesen und Dumping -Prozess. Sie können beispielsweise die obige Logik in eine Funktion integrieren und sie dann für die Seite "Protokollanzeige" verwenden:
function sanitize_log($logContent) {
$pattern_ip = '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b';
$pattern_token = '\b[a-zA-Z0-9]{8,32}\b';
$logContent = mb_eregi_replace($pattern_ip, '[REDACTED_IP]', $logContent);
$logContent = mb_eregi_replace('with token ' . $pattern_token, 'with token [REDACTED_TOKEN]', $logContent);
return $logContent;
}
// Beispielanruf
$rawLog = file_get_contents("https://m66.net/logs/example.log");
echo nl2br(htmlspecialchars(sanitize_log($rawLog)));
mb_eregi_replace bietet eine prägnante und effiziente Möglichkeit, Protokollinhalte mit vertraulichen Informationen zu verarbeiten. Durch einen angemessenen regelmäßigen Ausdrucksanpassung können Sie Schlüsseldaten wie IP und Token flexibel ersetzen, um die Privatsphäre des Benutzers zu schützen und sicherzustellen, dass Protokolle für die Entwicklung, den Betrieb und die Wartung immer noch nützlich sind.
Achten Sie bei Verwendung:
Stellen Sie sicher, dass der Ersatzmodus andere Rechtsdaten nicht falsch schädigt.
Beachten Sie, dass MB_Ereg_Replace von Fall unempfindlich ist. Wenn Sie fallsempfindlich sein möchten, können Sie mb_ereg_replace verwenden.
Nach PHP 8.0 kann diese Funktion nicht mehr empfohlen werden. Es wird empfohlen, die PCRE -Serienfunktionen mit PREG_REPLACE zu verwenden, aber es ist in einfachen Skripten immer noch bequem und praktisch.