Seite 1 von 2
PHP: preg
Verfasst: Di Aug 16, 2011 10:34 am
von naums
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
Re: PHP: preg
Verfasst: Di Aug 16, 2011 11:49 am
von Dubbel
Ä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 /.

Re: PHP: preg
Verfasst: Mi Aug 17, 2011 8:29 am
von naums
aso. Also der hier:
ersetzt dann alle <!-- durch !--. aber das hier versteh ich jetz trotzdem nicht ganz:
Code: Alles auswählen
$text = preg_replace("@#\?#@", "<?", $text);
$text = preg_replace("@#!--#@", "<!--", $text);
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
Re: PHP: preg
Verfasst: Mi Aug 17, 2011 11:34 am
von Dubbel
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...

Re: PHP: preg
Verfasst: Mi Aug 17, 2011 7:52 pm
von naums
okay. Danke

Re: PHP: preg
Verfasst: Sa Sep 03, 2011 10:13 am
von naums
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?
Re: PHP: preg
Verfasst: So Sep 04, 2011 6:56 am
von nouseforname
zB.: so:
Code: Alles auswählen
$data = preg_replace(array('/(?TEXT1)/','/\r(?TEXT2)/'), "ERSETZEN", $data);
oder so:
Re: PHP: preg
Verfasst: So Sep 04, 2011 3:13 pm
von naums
oh mein gott. Kannst du mir erklären was das bedeutet und warum der dann die zeichen ersetzt?
Re: PHP: preg
Verfasst: So Sep 04, 2011 5:31 pm
von nouseforname
naums hat geschrieben:oh mein gott. Kannst du mir erklären was das bedeutet und warum der dann die zeichen ersetzt?
preg_replace arbeitet mit
Regex, dieses dient dazu Suchmuster zu erstellen.
Beispiel:
in den [...] gibt man das Suchmuster an
^ 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.
Re: PHP: preg
Verfasst: So Sep 04, 2011 6:09 pm
von nufan