14. april 2007 - 13:06
Der er
12 kommentarer og 1 løsning
Lidt BBCode
Hejsa, Jeg sidder og laver noget bb-code, men mangler lidt... Her er min kode: <? $string = $_POST[tekst]; $simple_search = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is' ); $simple_replace = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>' ); $str = preg_replace ($simple_search, $simple_replace, $string); $text = ereg_replace('[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)', '<a href="\\0">\\1</a>',$str); echo $text; ?> Jeg vil gerne have, at man kan skrive: [img src="billeder/hej.jpg"] og så skal den så udskrive det som <img src="billeder/hej.jpg"> Og vil også have at den ikke skal tillade andre tags end: <b>, </b> <i>, </i> <u>, </u> <img> <a>,</a> Dvs. at ting som <script> osv ikke kommer ind.. Kan det lade sig gøre?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
14. april 2007 - 15:29
#1
Måske sådan her... Først fjernes alle 'rigtige' tags... $string=preg_replace("/<.*?>/", "", $string); Så laves de midlertidige tags om til noget 'rigtigt'.. $simple_search = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is' ); $simple_replace = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>' ); $string = preg_replace ($simple_search, $simple_replace, $string); Så er der img tag'et.. $string=preg_replace("/\[img src=\"(.*?)\"\]/", "<img src=\"$1\">", $string); Hvis ovenstående virker som forventet :) så fjernes alle <..> tags, og [..] tags som du har defineret i array'et ændres til <..> tags, og til sidst ændres [img src=".."] til <img src=".."> Det betyder at dette tag <script> slettes, mens dette [script] bliver stående. Men lad høre om det virker, er ikke testet. Mvh. Johan
14. april 2007 - 15:32
#2
Hvis du også vil have slettet alle [..] tag's, som ikke er 'konverteret' til sidst kan du måske bruge denne her.. $string=preg_replace("/\[.*?\]/", "", $string); Mvh. Johan
14. april 2007 - 15:38
#3
Ja okay, så lige at du også vil have <a> og </a> tag's med... $string=preg_replace("/\[a(.*?)\](.*?)\[/a\]/", "<a$1>$2</a>", $string); ...måske :).... Mvh. Johan
15. april 2007 - 12:11
#4
Hej Johan.. Den eneste jeg får er ved $string=preg_replace("/\[a(.*?)\](.*?)\[/a\]/", "<a$1>$2</a>", $string);, den skriver: Warning: preg_replace(): Unknown modifier 'a' in C:\WM\www\xxxxxx\xxxx.php on line 44. Tænkte på om du også vidste hvordan man får automatisk linjeskift i udskriften med php. For hvis jeg skriver noget i textarea'en og så har nogle steder hvor jeg har linjeskift, bliver det bare vist som én linje i min php udskrift? Er der en funktion til at gøre det automatisk??
15. april 2007 - 15:01
#5
Ja okay, det er vist sådan her.. $string=preg_replace("/\[a(.*?)\](.*?)\[\/a\]/", "<a$1>$2</a>", $string); ...måske...:) Linjeskift...hmm...prøv med php funktionen nl2br().. Mvh. Johan
15. april 2007 - 17:30
#6
Hej,
Det med nl2br virkede! Havde sku helt glemt den funktion!! Takker!
Kan dog ikke få det med [a] osv til at virke...
Kunne du evt. lave sådan at man skrev
Tekst ??
Jeg vil selvfølgelig forhøje points med 10..
15. april 2007 - 18:13
#7
Hmm...dette her virker da... <?php $string1="en masse bla vla og så [a href='link']Target[/a] og så en masse bla vla."; $string2=preg_replace("/\[a(.*?)\](.*?)\[\/a\]/", "<a$1>$2</a>", $string1); echo "<pre>".$string1."</pre>"; echo "<pre>".$string2."</pre>"; ?> ..men det er muligt det skyldes sammenhængen med ovenstående...så vis den kode du bruger for øjeblikket. Mvh. Johan
15. april 2007 - 18:45
#8
Virker stadig ikke.. Min kode ser således ud: <? $string = $_POST[tekst]; $string=preg_replace("/<.*?>/", "", $string); $simple_search = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is' ); $simple_replace = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>' ); $string = preg_replace ($simple_search, $simple_replace, $string); $string=preg_replace("/\[img src=\"(.*?)\"\]/", "<img src=\"$1\">", $string); $string=preg_replace("/\[.*?\]/", "", $string); $string=preg_replace("/\[a(.*?)\](.*?)\[\/a\]/", "<a$1>$2</a>", $string); $string = eregi_replace("#smiley_glad","<img src=images/tekstboks/smileys/glad.gif border=0>",$string); $string = eregi_replace("#smiley_vred","<img src=images/tekstboks/smileys/vred.gif border=0>",$string); echo nl2br($string); ?>
15. april 2007 - 20:50
#9
Ja okay du skal lige bytte om på de to linjer her.. $string=preg_replace("/\[.*?\]/", "", $string); $string=preg_replace("/\[a(.*?)\](.*?)\[\/a\]/", "<a$1>$2</a>", $string); ..så der står.. $string=preg_replace("/\[a(.*?)\](.*?)\[\/a\]/", "<a$1>$2</a>", $string); $string=preg_replace("/\[.*?\]/", "", $string); Lad høre om det hjælper. Mvh. Johan
16. april 2007 - 15:10
#10
Super! Tak for hjælpen - det virker sku nu! Kan du smide svar??
16. april 2007 - 16:12
#11
Ja, mon dog ikke ? :) Kommer her. Mvh. Johan
16. april 2007 - 21:41
#12
Og så endnu en gang tak for hjælpen ;)
16. april 2007 - 22:30
#13
Velbekomme og også tak for points :) Mvh. Johan
Vi tilbyder markedets bedste kurser inden for webudvikling