Lord Alien
Lt. Junior Grade
- Registriert
- Apr. 2007
- Beiträge
- 258
Hallo Community,
ich bin gerade dabei ein kleines php-script zu schreiben mit dem ich HTML-Code parsen möchte.
Und zwar möchte ich alle Leerzeichen durch " " ersetzen. Da allerdings mein Input bereits HTML-Code enthalten kann, möchte ich natürlich nicht das zB "<span style="..."> zu "<span style="..."> wird.
Meine Wahl ist auf eine Regular Expression gefallen um diese logik zu realisieren. Nachdem ich mir die basics zum Thema Regular Expression angelesen hab und das ganze auch munter mit "grep" unter Linux ausprobiert habe hab ich mir noch ein "Cheatsheet" heruntergeladen um immer schnell etwas nachschauen zu können.
Jetzt entsteht hier leider folgendes Problem:
Ich möchte ja auf das Zeichen "<" bzw. ">" prüfen. Dieses Zeichen steht auf meinem Cheatsheet in der Gruppe Meta-Zeichen. Muss also dementsprechend escaped werden. Escapezeichen ist "\". Soweit so gut. Mein Problem ist jetzt: die Kombination "\>" bzw. "\<" hat auch eine spezielle Bedeutung (laut dem Cheatsheet von addedbytes.com) nämlich "End of word" bzw. "Start of Word"?!?
Stimmt diese Information überhaupt? Wenn ja wie kann ich das ganze umgehen?
Mein erster Ansatz war folgende Regular Expression:
Leider gibt das direkt einen Warning vom PHP-Parser: Warning: preg_replace(): Compilation failed: nothing to repeat in offset 8 in /<pfad>/<zur>/<Datei>/ on line <zeilennr.>
Prinzipiell sieht mein php-Code folgendermaßen aus:
$_POST['text'] ist nur ein kleines textarea das entsprechend per form an mein Script übertragen wird.
Ich hoffe einige Leute kennen sich hier besser mit Regular Expressions aus, als/wie ich
Bin für jede Hilfe dankbar!
mfg
Alien
ich bin gerade dabei ein kleines php-script zu schreiben mit dem ich HTML-Code parsen möchte.
Und zwar möchte ich alle Leerzeichen durch " " ersetzen. Da allerdings mein Input bereits HTML-Code enthalten kann, möchte ich natürlich nicht das zB "<span style="..."> zu "<span style="..."> wird.
Meine Wahl ist auf eine Regular Expression gefallen um diese logik zu realisieren. Nachdem ich mir die basics zum Thema Regular Expression angelesen hab und das ganze auch munter mit "grep" unter Linux ausprobiert habe hab ich mir noch ein "Cheatsheet" heruntergeladen um immer schnell etwas nachschauen zu können.
Jetzt entsteht hier leider folgendes Problem:
Ich möchte ja auf das Zeichen "<" bzw. ">" prüfen. Dieses Zeichen steht auf meinem Cheatsheet in der Gruppe Meta-Zeichen. Muss also dementsprechend escaped werden. Escapezeichen ist "\". Soweit so gut. Mein Problem ist jetzt: die Kombination "\>" bzw. "\<" hat auch eine spezielle Bedeutung (laut dem Cheatsheet von addedbytes.com) nämlich "End of word" bzw. "Start of Word"?!?
Stimmt diese Information überhaupt? Wenn ja wie kann ich das ganze umgehen?
Mein erster Ansatz war folgende Regular Expression:
Code:
[\<]{0,}* *[\>]{0,}
Prinzipiell sieht mein php-Code folgendermaßen aus:
PHP:
$patterns = array('/ /', '/#/', '/RR/i')
$replacements = array(' ', '<span class="grau">#</span>', '<span class="blau">RR</span>')
$ergebnis = preg_replace($patterns, $replacements, $_POST['text'];
echo $ergebnis:
Ich hoffe einige Leute kennen sich hier besser mit Regular Expressions aus, als/wie ich
Bin für jede Hilfe dankbar!
mfg
Alien