phpbar.de logo

Mailinglisten-Archive

[php] BBCode-RegEx

[php] BBCode-RegEx

Joern Grube jg at cm-jg-portale.de
Fre Mar 3 12:15:12 CET 2006


Ich schreib mal über dem Quote, weil der eigentlich erledigt ist. Jetzt 
hab ich ein anderes Problem.
Ich hab den ganzen Kram weggeschmissen und gebe dem User jetzt diese 
Zeile, die er in das Formular kopiert um eine Grafik einzufügen:
Beispiel:
[img src="http://www.cm-jg-portale.de/ma_image_uploads/1141237890.jpg" 
alt="Schriftzug Gikan ryu" width="293" height="59" border="0" 
align="left" /]
Der Text wird dann hiermit bearbeitet:
$str = ereg_replace('\[img', '<img', $str);
	$str = ereg_replace(' /]', ' />', $str);
	$str = ereg_replace('<img src=', '<br clear="all" /><img src=', $str);
Ergibt dann:
<br clear="all">
<img src="http://www.cm-jg-portale.de/ma_image_uploads/1141237890.jpg" 
alt="Schriftzug Gikan ryu" align="left" border="0" height="59" width="293">
Funktioniert also tadellos, aaaaber, jetzt krieg ich den hier:
$str = htmlspecialchars($str);
nicht mehr rein (wobei ich eigentlich sogar htmlentities($str) 
bräuchte). Völlig egal, wo ich das hinschreibe (davor oder dahinter), es 
zerlegt mir das komplette Ergebnis. Es kommt dann dieses hier im Source 
raus (was ja auch logisch ist):
<img 
src=&quot;http://www.cm-jg-portale.de/ma_image_uploads/1141237890.jpg&quot; 
alt=&quot;Schriftzug Gikan ryu&quot; width=&quot;293&quot; 
height=&quot;59&quot; border=&quot;0&quot; align=&quot;left&quot; />
Aber ohne die Zeile kann mir ja da jeder reinschreiben, was er Lust hat, 
incl. jedem Javascript :( Was kann ich denn da machen??

Und eine zweite Frage: In dem String muss zwingend
http://www.cm-jg-portale.de/ma_image_uploads/
vorkommen. Es dürfen nur Bilder eingebunden werden, welche auf meinem 
Server liegen (der User kann diese vorher hochladen). Wie krieg ich das 
denn hin?

Mit freundlichen Grüßen Jörn Grube

Joern Grube schrieb:
> So ganz langsam dreh ich durch. Ich hab von RegEx wenig (keine) Ahnung, 
> also hab ich mir was bei http://regexlib.com/ gesucht und versuche das 
> anzupassen. Das Original sieht so aus:
> 
> $str = preg_replace("/(\[[Ii][Mm][Gg]\])(\S+?)(\[\/[Ii][Mm][Gg]\])/is", 
> "<a href=\"\\2\" target=\"_blank\"><IMG SRC=\"\\2\" align=\"center\" 
> height=\"100\" border=\"0\"></a>",$str);
> 
> Nun brauch ich aber keinen Link sondern nur das Bild, also bin ich jetzt 
> soweit:
> 
> $str = preg_replace('/(\[[Ii][Mm][Gg]\])(\S+?)(\[\/[Ii][Mm][Gg]\])/is', 
> '<img src=\"\\2\">', $str);
> 
> Ich hab also z.B. sowas:
> [img]http://www.cm-jg-portale.de/ma_image_uploads/1141237907.jpg" 
> alt="Schriftzug Gyokko ryu" width="278" height="58" border="0"[img]
> 
> und rauskommen soll das hier:
> <img src=http://www.cm-jg-portale.de/ma_image_uploads/1141237907.jpg" 
> alt="Schriftzug Gyokko ryu" width="278" height="58" border="0" />
> 
> Es kommt aber das hier raus:
> [img]http://www.cm-jg-portale.de/ma_image_uploads/1141237890 .jpg\" 
> alt=\"Schriftzug Gikan ryu\" width=\"293\" height=\"59\" border=\"0\"[img]
> 
> Ich hab ja nichtmal 'ne Ahnung, wo die Backslashes herkommen und vom 
> gewünschten Ergebnis bin ich ja sowieso noch ewig weit entfernt :( Und 
> die Backslashes darf es auch nicht geben, wenn ich das Formular erneut 
> abschicke (es ist eine Vorschau, die mal noch bearbeiten kann), werden 
> das jedesmal mehr :(
> Kann mir da jemand helfen, bitte.
> 
> Mit freundlichen Grüßen Jörn Grube
> P.S. Das Original tut übrigens auch nicht, was es soll.


php::bar PHP Wiki   -   Listenarchive