Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchen und Ersetzen in Templates
ich habe gerade die Suchen und Ersetzen in Templates Funktion benutzt um alle img-tags xhtml valide zu machen.
Dazu steht fogender Text:
Ein Beispiel: Wenn <img (.*)/?> gesucht und mit <img \1 /> ersetzt werden soll, werden alle <img> Tags gefunden und durch das Hinzufügen eines abschließenden Slashes in gültige XHTML Tags umgewandelt.
Nun irgendwie scheint dabei was schief gegangen zu sein denn jetzt wird das Forum nicht mehr richtig angezeigt. ;)
ich habe den regulären Ausdruck per copy n paste aus dem Beispiel übernommen :(
Kann man die Templates in einem Rutsch wieder herstellen?
Und am besten nur die die gerade geändert wurden?
EDIT: ah ok es gibt die Funktion "alle Templates wieder herstellen"
Ärgerlich das ich dann alle Modifikationen wieder von Hand einbauen muss.
Der Grund warum es die Templates zerschossen hat:
Wenn in einem img-tag > vorkommt zb beim -> Operator wird er als img-tag ende erkannt und zu - /> umgeschrieben.
Aus zb. $vbulletin->left_sidebar_image wurde $vbulletin- />
Viellecht wäre es sinnvol in die Suchen und Ersetzen Funktion die Validierung von vbulletin mit einzubauen dann wären die Änderungen gar nicht gespeichert worden.
Will man so ein Template speichern kommt nämlich folgende Fehlermeldung:
Der folgende Fehler trat beim Auswerten des Templates auf:
Parse error: parse error, unexpected '-', expecting '}' in /var/www/vhosts/www.abnehmen.com/httpdocs/includes/adminfunctions_template.php(3596) : eval()'d code on line 260
Häufig liegt das an einer falsch formulierten Syntax für eine Bedingung. Wir empfehlen, dass Sie diesen Fehler beheben. Sie können das Template aber auch in diesem fehlerhaften Zustand lassen.
Wäre schon praktisch wenn der Hinweis auch beim Suchen und Ersetzen kommen würde :)
StGaensler
22.01.2007, 23:08
Danke, in dem Regex-Ausdruck befindet sich ein kleiner Fehler, es muss heißen: Wenn <img (.*) /?> gesucht - ein fehlendes Leerzeichen aber große Auswirkungen :)
Viele Grüße,
Stefan
StGaensler
22.01.2007, 23:26
Soo, ich habe es als Bug gemeldet (http://www.vbulletin.com/forum/bugs36.php?do=view&bugid=1418), und bereits in der deutschen Version behoben. Vielleicht wird aber auch ein anderes Beispiel genommen, da der HTML-Code von allen Bildern bereits korrekt ist... wer weiß :)
Viele Grüße,
Stefan
naja das zusätzliche leerzeichen verhindert zwar das der -> Operator als img-tag ende erkannt wird aber dafür werden auch keine html img-tags mehr erkannt. Es werden so ja nur ohne hin schon xhtml valide img tags erkannt.
Besser wäre der Ausdruck so:
preg_replace('#<img (.*)">#isU', '<img \1" />, $template);
dann würden nur noch img-tags erkannt werden in denen, hoffentlich am Ende, "> vor kommt
StGaensler
23.01.2007, 18:07
Stimmt, da hast du recht, allerdings funktioniert deine Lösung ebenso nicht. Bei diesem Konstrukt (Template buddylistbit) würde er den öffnenden <phrase>-Tag schließen:<img src="$stylevar[imgdir_statusicon]/user_$buddy[statusicon].gif" alt="" title="<phrase 1="$buddy[username]" 2="$buddy[statusicon]">$vbphrase[x_is_y]</phrase>" border="0" />
Theoretisch (mit Regex Coach oder online (http://regexp-evaluator.de/evaluator/8a3ed576456f0e13434130d028d0c985/#ergebnis)) funktioniert <img ([^<>]+|([^<>]+<[^<>]+>[^<>]+)+)( /)?>, aber praktisch im vBulletin leider nicht...
Viele Grüße,
Stefan
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.