webForumDet fria alternativet

"BBcode"

14 svar · 851 visningar · startad av filipbh

filipbhMedlem sedan juli 2002402 inlägg
#1

Hur nekar man till vanlig HTML-kod och istället använder s.k. "BBcode"/webForum-kod?

Måste man lägga till en kod för varje "händelse" sen? Alltså lägga till så att t.ex. **blir <b> på alla möjligheter?

Känner att det var dåligt förklarat :l**

MatteMedlem sedan aug. 20002 970 inlägg
#2

Japp, du får sedan kolla "kod för kod" typ:

$text = preg_replace("/\\[b](.*?)\\[\\/b]/is", "<b>$1</b>", $text);

Lämpligtvis lägger du det i arrayer:

$pattern = array (
   "/\\[b](.*?)\\[\\/b]/is",
   "/\\[i](.*?)\\[\\/i]/is",
   "/\\[u](.*?)\\[\\/u]/is"
);
$replace = array (
   "<b>$1</b>",
   "<i>$1</i>",
   "<u>$1</u>"
);

$text = preg_replace($pattern, $replace, $text);

Innan du gör detta kanske du vill "ta bort" HTML-kod. Enklast gör du detta genom att göra om taggarna till entiteter. Du måste göra det innan du kör koden som gör om din bbcode, och då gör du något i den här stilen:

$text = htmlentities($text);
filipbhMedlem sedan juli 2002402 inlägg
#3

Har bara hunnit testa htmlentities och den fungerar inte som jag vill.. Det jag har nu är:

$gbtext = $rad[text];
$gbtext = htmlentities($gbtext);
echo $gbtext;

Den ligger alltså så att den gör detta när texten skrivs ut.. Ska man ha den när meddelandet sparas istället?

Kan man ha:

$gbtext = $rad[text];
$gbtext = htmlentities($gbtext);
$gbtext = nl2br($gbtext);
echo $gbtext;

Eller blir det fel om man kör både nl2br och htmlentities?

MatteMedlem sedan aug. 20002 970 inlägg
#4

Du kan ha både htmlentities och nl2br, men du måste, precis som du gjort, ha htmlentities före nl2br.

Du kan gott spara texten i sitt "råformat". Det gör det lättare om man t.ex. skulle vilja gå in och ändra på texten.

filipbhMedlem sedan juli 2002402 inlägg
#5

Det fungerar bra =) Om jag vill ha en tagg som heter "color" och genererar rgb-färger, hur gör jag då?

T.ex Text blir <font color="#F3C5DB">Text</font> Själv color-taggen är ju som de andra men att textens färg blir colors "värde".

MatteMedlem sedan aug. 20002 970 inlägg
#6

T.ex

$text = preg_replace("/\\[color=([0-9a-f]+)](.*?)\\[\\/color]/is", '<span style="color:#$1">$2</span>', $text);

Kör detta efter htmlentities().

filipbhMedlem sedan juli 2002402 inlägg
#7

Det här kommer upp när jag kör color-koden:

Warning: Unknown modifier 'c' in /customers/divisionsthlm.se/divisionsthlm.se/httpd.www/gastbok.php on line 218

Rad 218: $gbtext = preg_replace($pattern, $replace, $gbtext);

filipbhMedlem sedan juli 2002402 inlägg
#8

Förlåt det hade försvunnit en "\"... Men det är ett annat fel.

Jag skrev ett inlägg med denna text: Färgad text

Resultatet blev: F&aum;rgad text där F&aum; var färgad men resten vit som övriga texten...

MatteMedlem sedan aug. 20002 970 inlägg
#9

Det fungerar utmärkt när jag testar:

$text = "
Hej hopp
qwerty [color=F3C5DB]Färgad text[/color]
asdfgh
";

$text = htmlentities($text);

$pattern = "/\\[color=([0-9a-f]+)](.*?)\\[\\/color]/is";
$replace = '<span style="color:#$1">$2</span>';
$text = preg_replace($pattern, $replace, $text);

echo nl2br($text);

[EDIT]
Ursäkta, glömmer alltid bort att jag behöver ha dubbla backslash i regexpar för att forumet inte ska rensa bort dom.

filipbhMedlem sedan juli 2002402 inlägg
#10

Warning: Unknown modifier 'c' in /customers/divisionsthlm.se/divisionsthlm.se/httpd.www/testDSC.php on line 12

kommer upp.. Men det verkar som att wF tar bort vissa "\"...

filipbhMedlem sedan juli 2002402 inlägg
#11

Så här ser det ut för mig...

dsc.jpg
MatteMedlem sedan aug. 20002 970 inlägg
#12

Glömmer hela tiden att forumet rensar bort backslash om man inte skriver dom dubbelt i regexpar :)

Har fixat till koden ovan.

Kan du visa din kod som ger det resultatet ?

filipbhMedlem sedan juli 2002402 inlägg
#13

Skickar det i en textfil så att alla tecken kommer med...

MatteMedlem sedan aug. 20002 970 inlägg
#14

Ändra

"/\\[color=([0-9A-F]+)](.*?)[\\/color]/is",

till

"/\\[color=([0-9A-F]+)](.*?)\\[\\/color]/is",

Alltså lägg till backslash före [\/color].

filipbhMedlem sedan juli 2002402 inlägg
#15

Nu fungerar det perfekt!

Tack för all hjälp...

Genererad på 421 ms · cache AV · v20260730165559-full.f96bc7eb