![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 30.10.2005
Beiträge: 279
|
Ich hab ein kleines Script was mit mit preg_match bestimmte Vorkomnisse in einem Text sucht und ersetzt. Der Text wird mit preg_match geparsed und danach wird das $matches Array in einer Schleife durchlaufen und die gefundenen Stellen mit str_replace ersetzt. Mein Ausdruck bezieht sich nur auf eine ganze Zeilen das heißt wenn mein ... Wiki ähnlicher Code nicht alleine in einer Zeile steht sondern mitten in einem Satz dann wird er ignoriert weil der regexp nur ganze Zeilen beachtet. So weit funktioniert das. Problem ist wenn die Vorkommnisse ersetzt werden. Hierbei wird $matches[0] (also die komplett gefundene Stelle) mit str_replace verwendet. Steht der exakt gleiche Wiki Code an einer weiteren Stelle mitten im Satz wird dieser natürlich auch ersetzt. Nun möchte ich die gefundenen Stellen mit preg_replace ersetzen. Allerdings muss ich dafür die gefundenen Stellen in meinen Ausdruck einbauen damit die exakten Stellen ersetzt werden. Der in der Klasse festgelegte Regexp sieht ungefähr so aus. Code: $this->pattern = '/\<p>{img\|(.*?)\|(left|right)\|(.*?)\}<\/p>/si';
Es dürfte wahrscheinlich so gehen Code: $this->pattern = '/\<p>{img\|'.$text1.'\|(left|right)\|'.$text1.'\}<\/p>/si';
|
| | |
| | Nach oben #2 |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
| PHP-Code: Allerdings Frage ich mich, warum du den Umweg durch preg_match gehst? Das währe einfacher mit preg_replace_callback zu lösen und auch performanter. |
| | |
| | Nach oben #3 |
| Johannes Schlichenmaier Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 397
|
Bin ich dumm? Was spricht gegen ein einfaches preg_replace mit dem \m-Modifier? á la PHP-Code: Jojo
__________________ In the beginning was the word and the word was content-type: plain/text heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int |
| | |
| | Nach oben #5 | |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
Einfach mit preg_replace arbeiten ließe es sich auch. Dazu müsstest du den e-Modifier anhängen. PHP-Code: Zitat:
| |
| | |
| | Nach oben #6 |
| Johannes Schlichenmaier Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 397
|
Er will doch praktisch Zeile für Zeile Sachen ersetzen. Das mit der DB-Query wusste ich nicht. Steht das oben irgendwo?
__________________ In the beginning was the word and the word was content-type: plain/text heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int |
| | |
| | Nach oben #7 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Eine Alternative wäre vielleicht auch mittels des Parameters "Limit" von preg_replace() auf "1" zu arbeiten. Dann ersetzt er nur das erste Vorkommnis in der Zeichenkette und nicht alle. Aber abgesehen davon: Warum machst du dir das so kompliziert mit dem 2. Query? Nutze einfach preg_quote(), um das Suchergebnis "0" (Also den kompletten String) zu parsen und nimm den als Suchmuster. Dann brauchst du keinen Query zusammenstückeln.
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Youtube Videos gewerblich einsetzen? | bob | Interessante Diskussionsthemen | 7 | 18.10.2006 13:07 |
| StrinkTokenizer oder doch RegExp? | Ben | Allgemeine Java-Programmierung | 7 | 15.03.2006 13:59 |
| regexp Datums-Vervollständigung | ex³ | PHP-Programmierung | 10 | 12.02.2006 16:16 |
| [MySQL] REGEXP Problem | Jay | Datenbanken | 3 | 27.12.2005 13:52 |
| Werte Übergabe von Klasse zu Klasse | williplumps | Allgemeine Java-Programmierung | 3 | 06.08.2005 09:41 |