Thema: URLs der Forum-Syntax umwandeln

Tach erstmal

also ich programmiere gerade an einem Newssystem, und da wollte ich (aus Sicherheitsgründen) die Tags verbieten (umwandeln mit htmlspecialchars).

Da ich aber doch den Leuten erlauben will, URLs (http,https,ftp,mailto) zu benutzen, hab ich mir gedacht nimmste einfach die Syntax die sich auch in vielen Forensystemen durchgesetzt hat:

]url=http://www.test.de]Stiftung Warentest[/url]
]url]http://www.test.de[/url]
http://www.test.de

(ich weiß, in den ersten beiden Beispielen muss die erste eckige Klammer auf sein und nicht zu)

Da das mit normalen String-Funktionen in PHP 4 zu schwierig wäre, hab ich mir gedacht probierste das mal mit Regulären Ausdrücken (POSIX). Nur leider hab ich nicht viel Ahnung davon. Ich hab mir mit einem Buch über PHP was zusammengereimt, aber das funzt net. Ich bekomm immer den Fehler Warning: REG_ERANGE: in ...

hier ist mein erster Versuch:
$test=ereg_replace("[(u|U)(r|R)(l|L)=(a-zA-Z0-9.:/_-=?&%)](.*)[/(u|U)(r|R)(l|L)]","<a href="\4" target="_blank"><font color="#0000FF">\5</font></a>",$test);

Könnt ihr mir da helfen ???

Bye, Ti-Sch big_smile

2

Re: URLs der Forum-Syntax umwandeln

Hoi Ti-Sch,

kleiner Hint:
nimm:
eregi_replace
Weil: Dem Ding is Groß-UnD klEInSchreIBung egal   <img border="0" title="" alt="[Breites Grinsen]" src="images/icons/grin.gif" /> 

Gruß, Tink

Beleidigungen sind die Argumente derer, die keine Argumente haben

3

Re: URLs der Forum-Syntax umwandeln

Tach erstmal

Danke. dann muss ich nicht immer (u|U) etc. machen ... OK, das hat mir jetzt bei dem fetten Text geholfen, aber mein Problem besteht immer noch:

jetzt bin ich bei:
$test=eregi_replace("[url=([a-z0-9.:/_-=?&%]+)](.*)[/url]","<a href="\1">\2</a>",$test);
und hab immer noch den REG_ERANGE-Fehler ...

Bye, Ti-Sch big_smile

4

Re: URLs der Forum-Syntax umwandeln

Hiho  <img border="0" title="" alt="[Lächeln]" src="images/icons/smile.gif" />

How about this:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">  $text = "[URL]www.devshare.de[/URL]";

   $t = eregi_replace("(.*)","<A HREF="\1">\1</A>",$text);

   print $t;[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">HTH, Tink

Beleidigungen sind die Argumente derer, die keine Argumente haben

5

Re: URLs der Forum-Syntax umwandeln

Hohi,

oder that:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">$test=' rfc2396 :: url ';

echo preg_replace("/[url=([^]]*)]([^[]*)[/url]/i",
                   "<a href='$1' target='_blank'><font color='#0000FF'>$2</font></a>", $test);[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">gruß

matho

6

Re: URLs der Forum-Syntax umwandeln

Tach erstmal

jaja, aber ein Problem gibt es bei allen beiden Versionen noch:

$test="]URL]http://www.test.de[/URL] und noch ein Link ]URL]http://www.devshare.de[/URL]";

würde folgendes ausgeben:

<a href="http://www.test.de[/URL] und noch ein Link ]URL]http://www.devshare.de">http://www.test.de[/URL] und noch ein Link ]URL]http://www.devshare.de</a>

Wie kann man da am Besten erkennen, wo der Link zu Ende ist ?

Bye, Ti-Sch big_smile

7

Re: URLs der Forum-Syntax umwandeln

Nochmal Hi   <img border="0" title="" alt="[Lächeln]" src="images/icons/smile.gif" /> 

Okay, wie wär´s dann damit:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">  $text = "[URL]http://www.test.de[/URL] und noch ein Link [URL]http://www.devshare.de[/URL]";
   $t1 = preg_replace("/(.*)/iU","<A HREF="$1">$1</A>",$text);

   print $t1;[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">HTH, Tink

[edit]
Beispieltext eingefügt
[/edit]
 
  <small>[ 30-11-2002, 22:38: Beitrag editiert von: Tink ]</small>

Beleidigungen sind die Argumente derer, die keine Argumente haben

8

Re: URLs der Forum-Syntax umwandeln

Da kann ich mich nur anschliessen:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"><?
$test='Achso, $test soll einen längeren text enthalten,
        in dem verschiedene links vorkommen,
        z.B derda: rfc2396 :: uri ,
        und dann vielleicht noch jenner: rfc2141 :: urn ,
        und vielleicht noch einer: rfc822 :: arpa internet text messages ,
        allerdings klappt das doch (jedenfalls bei mir), und auch, wenn ich zwo links unmittelbar hintereinander
        schreibe:[url=http://www.ietf.org/rfc/rfc2277.txt] rfc2277 :: IETF Policy on Character Sets and Languages
        [/url] rfc1034 :: DOMAIN NAMES - CONCEPTS AND FACILITIES ,
        oder hab' ich wieder mal was nicht ganz verstanden? ';

echo preg_replace("/[url=([^]]*)]([^[]*)[/url]/i",
                   "<a href='$1' target='_blank'><font color='#0000FF'>$2</font></a>1512", $test);
?>

und nochen gruß

matho[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">

9

Re: URLs der Forum-Syntax umwandeln

Tach erstmal

Danke Matho  <img border="0" title="" alt="[Winken]" src="images/icons/wink.gif" />

jetzt funzt es ...

Bye, Ti-Sch big_smile