PHP » Zeichen(ketten) maskieren

Maskieren

Wenn man Usereingaben in einer Textdatei speichern möchte, z. B. für ein Gästebuch, muss man die Eingaben maskieren. D. h. wenn man folgendes Datenformat verwendet «Zeit|Name|Text\nZeit|Name|Text», dass verhindert werden muss, das ein User das Gästebuch verwirrt, in dem er in seinen Text ein «|» schreibt. Dazu kann man z. B. festlegen, dass man ein «|» durch «\1», «\n» durch «\2» und ein «\» durch «\3» ersetzt. Meine Klasse macht das automatisch: Man sagt ihr, welche Zeichen nicht im Text vorkommen dürfen, und welches Zeichen zum Maskieren verwendet werden soll. Hier ein Beispiel: <?php
$r1 
= new replace("\n|"); // Es dürfen weder Zeilenumbrüche noch Trennstriche mit in die Datei gespeichert werden
$maskiert $r1->modify("Hallo!\nIch|habe|viele|Trennstriche und ein \Backslash.");
echo 
$maskiert."\n\n";

$r2 = new replace("\n|"); 
$r2->invert(); // Durch das invert() wird der Klasse gesagt, dass jetzt demaskiert werden soll
$demaskiert $r2->modify($maskiert);
echo 
$demaskiert."\n";
?>

Größere Anzahl an Ersetzungen durchführen

Manchmal möchte man sich zu ersetzende Zeichenketten merken, und dann auf unterschiedliche Zeichenketten oder Arrays anwenden, zwischendrin die zu ersetzenden Zeichenketten vielleicht noch ergänzen, invertieren. Oder man möchte nur die jeweils ersten Vorkommnisse im Text ersetzen. (Sicherlich. Das geht auch mit den Standard-PHP-Funktionen relativ leicht. Aber nicht so übersichtlich und komfortabel.) <?php
$r1 
= new replace;
$r1->add("abc","123");
$r1->add("foo","bar");
$output1 $r1->modify($input);

$r1->invert(); // invertiert
$output2 $r1->modify($input);

$r1->replaceonlyfirstoccurrences(); // invertiert & nur erste Vorkommnisse werden ersetzt
$output3 $r1->modify($input);

$r1->invert(False); // invertiert aus
$r1->replaceonlyfirstoccurrences(False); // nur erstes Vorkommnis ersetzen aus
$r1->clear(); // Regeln zurückgesetzt
?>

Suchen & Ersetzen

Die statische Funktion firstoccurrence() kann wie str_replace aufgerufen werden. Sie ersetzt das erste Vorkommnis einer Zeichenkette. Momentan unterstützt sie noch keine Arrays als Parameter — wer das braucht, soll's in 10 Zeilen einbauen und mir schicken ;) <?php
    
echo replace::firstoccurrence("test","hehe","test, test, test"); // => hehe, test, test
?>
Die statische Funktion between() sucht eine zwischen zwei anderen liegende Zeichenkette. <?php
    
echo replace::between("abc[b]strong[/b]","[b]","[/b]"); // => strong
?>
Quellcode ansehen | Herunterladen

© 2009 Julian von Mendel (http://derjulian.net) | Datum: 26.04.2024