![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hi. Ich hab hier eine kleine Funktion, um Platzhalter in Strings zu ersetzen. Das Ganze funktioniert ohne RegExps, sondern splittet den String in Arrays, deren Felder dann nach und nach ersetzt werden. Scheint mir aber sehr aufwändig zu sein dieses Verfahren und ich würde mich über flottere Lösungen freuen. Die Texte, um die es da geht sind hauptsächlich ein, zwei, drei Sätze lang und in den meisten Fällen muss gar nichts ersetzt werden. Rudimentäre Tests und damit das benötigte Verhalten ist im Code unten enthalten. Nochmal kurz zusammengefasst: Variablen: %test% Prozentzeichen: \% Backslashes: \\ Nicht angegebene Variablen sollen bestehen bleiben, also nicht rausgelöscht bzw. durch einen leeren String ersetzt werden. Basti PHP-Code: Geändert von Basti (05.03.2007 um 13:55 Uhr). |
| | |
| | Nach oben #4 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
War nicht als Qualitätsmerkmal gemeint, dass ich keinen RegExp verwendet hab. Mir ist da nur kein gescheiter Ansatz eingefallen. Könnt ihr mir hier helfen? Ein anderer Ansatz, den ich bei sowas öfter verwendet hab ist, die Sonderzeichen erstmal durch Zeichen zu ersetzen, die im Text nicht vorkommen und hinterher wieder "zurück zu übersetzen". Basti |
| | |
| | Nach oben #5 |
| Jonas Registriert seit: 03.06.2006
Beiträge: 240
|
Ich würde ein preg_replace_callback benutzen - scheint mir am sinnvollsten.
__________________ Applikations-Programmierung: BlitzMax, BlitzPlus Webentwicklung: PHP, (X)HTML, CSS, JavaScript, MySQL |
| | |
| | Nach oben #7 |
| Jonas Registriert seit: 03.06.2006
Beiträge: 240
|
Sowas ähnliches: Code: [^\\](\\\\)*%([a-zA-Z]+)%
__________________ Applikations-Programmierung: BlitzMax, BlitzPlus Webentwicklung: PHP, (X)HTML, CSS, JavaScript, MySQL Geändert von Artemis (06.03.2007 um 18:49 Uhr). |
| | |
| | Nach oben #8 |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
Eine Möglichkeit: PHP-Code: EDIT: Sorry, hab da noch etwas drüber nachgedacht. Jetzt stimmt die Funktion. Ersetzungen: Code: %foo%%bar% => wert1wert2 \\%foo\\% => \wert1\ \\%foo%\\ => \wert\\ \%foo\% => \%foo\% \%foo% => \%foo% Code: array[1] = \\% oder \% oder % array[3] = \\% oder \% oder % array[2] = Wert zwischen array[1] und array[3] EDIT nochmal: Merkwürdig, wenn ich mein RegEx beim RegEx-Tester eingebe, dann funktioniert alles: http://www.regex-tester.de/regex4_20070306205844.html Wenn ich es aber lokal ausführe, kommt: Code: Warning: preg_replace_callback(:( Compilation failed: missing terminating ] for character class at offset 56 in D:\Programme\xampp\htdocs\projects\tests\- on line 36 Geändert von dago (06.03.2007 um 21:06 Uhr). |
| | |
| | Nach oben #9 | |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
@Basti Jetzt glaube ich weiß was dein Problem war/ist. (EDIT bzw. nur meins Zitat:
PHP-Code: PHP-Code: PHP-Code: Ok, jetzt hab ich auch was dabei gelernt. *g* Geändert von dago (07.03.2007 um 00:51 Uhr). | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Werte in einen Regexp einsetzen. | ex³ | PHP-Programmierung | 6 | 02.02.2007 07:27 |
| Probleme mit RSS | heohni | PHP-Programmierung | 21 | 13.10.2006 12:10 |
| Text hinter einem Bild mittig positionieren | florian | HTML, XML und CSS | 3 | 13.09.2006 21:28 |
| Bild im Text mit css? | code5 | HTML, XML und CSS | 11 | 20.12.2005 13:15 |
| dateisystem, Text an erste Position anhängen | Niedi | PHP-Programmierung | 15 | 28.10.2005 20:59 |