PHP: preg
PHP: preg
Hallihallöchen,
Ich bin über einen Kommentar in der PHP-Funktionsliste gestolpert: http://www.php.net/manual/de/function.s ... php#102221
Der Typ benutzt preg_replace. Kann mir jmd. erklären, was es damit auf sich hat und wie dort etwas sinnvolles rauskommen kann? (weil ich seh da ehrlich gesagt nicht durch). Auf die Schnelle hab ich im Wiki auch nichts gefunden.
MfG naums
Ich bin über einen Kommentar in der PHP-Funktionsliste gestolpert: http://www.php.net/manual/de/function.s ... php#102221
Der Typ benutzt preg_replace. Kann mir jmd. erklären, was es damit auf sich hat und wie dort etwas sinnvolles rauskommen kann? (weil ich seh da ehrlich gesagt nicht durch). Auf die Schnelle hab ich im Wiki auch nichts gefunden.
MfG naums
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
Re: PHP: preg
Ähm, preg_replace ersetzt Zeichen, die auf den regulären Ausdruck (regular Expression, der erste Parameter) passen, mit den Zeichen des zweiten Parameters in der Variable, die als dritter Parameter übergeben wurde.
Das @ ist der Begrenzer, der den eigentlichen Ausdruck halt... begrenzt ^^ Der besagt, dass <? ersetzt werden soll. Der Backslash maskiert das Fragezeichen, da das Fragezeichen eigentlich in regEx dafür steht, dass des vorangegangene Zeichen vorkommen kann, aber nicht muss. Ersetzt wird das ganze dann durch ein einfaches Fragezeichen, so dass z.B. "<?php" zu "?php" wird, und dem Code nichts böses anhaben kann.
Wolltest du das wissen?
Edit: Die Raute im zweiten Parameter dient auch als Begrenzer, da kann man mehrere Zeichen nehmen, normalerweise nimmt man den normalen Slash /.
Code: Alles auswählen
$text = preg_replace("@<\?@", "#?#", $text);
Wolltest du das wissen?
Edit: Die Raute im zweiten Parameter dient auch als Begrenzer, da kann man mehrere Zeichen nehmen, normalerweise nimmt man den normalen Slash /.
Re: PHP: preg
aso. Also der hier:
ersetzt dann alle <!-- durch !--. aber das hier versteh ich jetz trotzdem nicht ganz:
Was machen die @ und # dort? Sind beides Begrenzer. Und im zweiten Parameter gibts dann garkeinen? Wozu dienen die Begrenzer? Werden die wirklich mit entfernt/mit reingesetzt oder sind die einfach da, aber man kann sie im String net finden. Warum hat der 2. Parameter keine Begrenzer?
MfG Naums
Code: Alles auswählen
$text = preg_replace("@<!--@", "#!--#", $text);
Code: Alles auswählen
$text = preg_replace("@#\?#@", "<?", $text);
$text = preg_replace("@#!--#@", "<!--", $text);
MfG Naums
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
Re: PHP: preg
Oh, du hast Recht, der zweite Parameter ist einfach nur ein String, kein regulärer Ausdruck. Also wird da die Raute nicht als Begrenzer genommen, sondern einfach mit reingesetzt.
Und mit dem beiden letzten preg_replaces wird dann nach #?# gesucht (begrenzt von den @s) und das wieder ersetzt...
Und mit dem beiden letzten preg_replaces wird dann nach #?# gesucht (begrenzt von den @s) und das wieder ersetzt...
Re: PHP: preg
ist es mit preg_replace auch möglich mehrere Zeichen gleichzeitig zu ersetzen? zum Beispiel alle Arten von ä,ö,ü,ß,/()\}{ und leerzeichen, sozusagen alles was im als pfadangabe im inet nie verwendet werden sollte?
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
-
- Beiträge: 236
- Registriert: Do Feb 10, 2011 6:31 pm
Re: PHP: preg
zB.: so:
oder so:
Code: Alles auswählen
$data = preg_replace(array('/(?TEXT1)/','/\r(?TEXT2)/'), "ERSETZEN", $data);
Code: Alles auswählen
$data= preg_replace('/[^A-Za-z0-9]/', '', $data);
Re: PHP: preg
oh mein gott. Kannst du mir erklären was das bedeutet und warum der dann die zeichen ersetzt?
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
-
- Beiträge: 236
- Registriert: Do Feb 10, 2011 6:31 pm
Re: PHP: preg
preg_replace arbeitet mit Regex, dieses dient dazu Suchmuster zu erstellen.naums hat geschrieben:oh mein gott. Kannst du mir erklären was das bedeutet und warum der dann die zeichen ersetzt?
Beispiel:
Code: Alles auswählen
[^A-Za-z0-9]
^ invertiert die Suche
A-Z = alle Großbuchstaben von A-Z
a-z = alle Kleinbuchstaben von a-z
0-9 = alle Zahlen zwischen 0-9 (sind ja alle)
Aus dem ersten Beispiel:
?TEXT = markiert den Beginn eines Wortes
(..) trennt Suchmusster in Arrays auf wenn notwendig.
Das Suchmusteer bedeutet also "Finde alle Zeichen die NICHT A-Z, a-z oder 0-9 sind. In Verbindung mit preg_replace wird das ganze dann in oben genanntem Beispiel einfach nur gelöscht.