bbcode probleempje

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hey hey, op het moment voeg ik dingen toe aan een mysql database met daarin BBcode verwerkt, deze BBcode wordt daarna weer omgezet tot gewone HTML code op de volgende manier:

PHP:
$content = str_replace ('[center]', '<center>', $content );
$content = str_replace ('[/center]', '</center>', $content );
$content = str_replace ('[img]', '<img style="border:6px double #545565;" src=', $content );
$content = str_replace ('[/img]', '>', $content );
$content = nl2br("$content");

Dit werkt opzich perfect, maar ik krijg dit niet voor elkaar met a href.

Dit:
Code:
<a href=http://img253.imageshack.us/img253/6579/3halo3dd3.jpg><img style="border:6px double #545565;" src=http://img253.imageshack.us/img253/6579/3halo3dd3.jpg width=90%></a>

Moet dit worden:
Code:
[link= http://img253.imageshack.us/img253/6579/3halo3dd3.jpg][ img]http://img253.imageshack.us/img253/6579/3halo3dd3.jpg[/img][/link]

Het img stukje is dus gelukt, maar nu a href nog. Maar hoe? :thumb:
 
Laatst bewerkt:
Er zwerft hier nog wel ergens een topic van mij over. (Had een zelfde vraag er toen over)

Ik vond dit stukje nog voor je in een code. Het werkt wel met preg_replace aangezien je dan wat meer mogelijkheden hebt. (Het maakt nu niet uit of je het met een hoofdletter of wat hebt getypt)
PHP:
$bbcode = array (
'/\[b\](.*)\[\/b\]/Usi' => '<b>\\1</b>',
'/\[u\](.*)\[\/u\]/Usi' => '<u>\\1</u>',
'/\[i\](.*)\[\/i\]/Usi' => '<i>\\1</i>',
'/\[s\](.*)\[\/s\]/Usi' => '<s>\\1</s>',
'/\[center\](.*)\[\/center\]/Usi' => '<center>\\1</center>',
'/\[hr\]/i' => '<hr />',
'/\[sub\](.*)\[\/sub\]/Usi' => '<sub>\\1</sub>',
'/\[sup\](.*)\[\/sup\]/Usi' => '<sup>\\1</sup>',
'/\[url](.+)\[\/url\]/Usi' => '<a href="\\1" target="_blank">\\1</a>',
'/\[url=(.+)\](.+)\[\/url\]/Usi' => '<a href="\\1" target="_blank">\\2</a>',
'/\[img](.+)\[\/img\]/i' => '<img src="\\1" alt="" />',
'/\[img=(.+)\]/Ui' => '<img src="\\1" alt="" />',
'/\[img h=(.+) w=(.+)](.+)\[\/img\]/i' => '<a href="\\3" target="_blank"><img src="\\3" height="\\1" width="\\2" alt="" /></a>'
);

$bericht = "Dit gaat in [b]bbcode[/b], [url=http://www.helpmij.nl]dit[/url] moet je instellen als je startpagina ;). [I]Dit[/i] hoort ook gewoon te werken, net als deze afbeelding [imG]http://layout.helpmij.nl/images/logonieuw.gif[/iMg]";
$bericht = preg_replace(array_keys($bbcode), array_values($bbcode), $bericht);
echo $bericht;
Ik heb ook nog wel een soortgelijke voor emoticons.
PHP:
$emoticons_array = array(
  ":@" => "images/emoticons/angry.gif",
  ":D" => "images/emoticons/biggrin.gif",
  ":huh:" => "images/emoticons/blink.gif",
  ":$" => "images/emoticons/blush.gif",
  "|)" => "images/emoticons/closedeyes.gif",
  ":cool:" => "images/emoticons/cool.gif",
  ":grmbl:" => "images/emoticons/dry.gif",
  ":wtf:" => "images/emoticons/huh.gif",
  ":))" => "images/emoticons/laugh.gif",
  ":|" => "images/emoticons/mellow.gif",
  ":O" => "images/emoticons/ohmy.gif",
  ":roll:" => "images/emoticons/rolleyes.gif",
  ":(" => "images/emoticons/sad.gif",
  ":)" => "images/emoticons/smile.gif",
  ":P" => "images/emoticons/tongue.gif",
  ":erm:" => "images/emoticons/unsure.gif",
  ":S" => "images/emoticons/wacko.gif",
);

foreach($emoticons_array AS $key => $waarde) {
  $img = "<img src='$waarde' border=0>"; 
  $bericht= str_replace($key, $img, $bericht);
}
 
Dat ziet er verwarrend uit zeg... met al die slashes ben ik al snel de draad kwijt. Maargoed, morgen even proberen dan :D
 
Sorry dat ik zolang niets heb laten horen maar had het weer eens druk. :o

Het heeft perfect gewerkt maar nu nog een vraagje, hoe maak ik een submit-formulier dat BBcode heeft ingebouwd. Net zoals helpmij dus. Als je tekst selecteerd en dan op bijvoorbeeld B klikt, wordt de tekst dus bold gemaakt met BBcode. Zoiets wil ik ook graag maken :thumb:
 
Dan zul je met Javascript bezig moeten. (Wellicht kun je hier en daar wat vinden in de bron van Helpmij ;))
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan