BB code tags

Status
Niet open voor verdere reacties.

Barry_127

Gebruiker
Lid geworden
20 jan 2003
Berichten
478
hoi,

ik zet met htmlspecialchars en nl2br mijn gegevens in een database en bij het weergeven als ik die gegevens eruit haal wil ik dat wat er tussen [ code ] en [ /code ] staat wordt weergegeven als highlight, maar hoe doe ik dit, ben net al bezig geweest maar wordt alleen maar erger :(

//EDIT: heb hem gevonden :)
 
Laatst bewerkt:
Post de oplossing dan ook ff ? ;)

*hoopt op een stackbased UBB parser ...*
 
was een stackbased ubb?

volgens mij deze functie niet :p

PHP:
<?php
function code($code)
{ 
	$code = str_replace("&amp;", "&", $code); 
	$code = str_replace("&lt;", "<", $code); 
	$code = str_replace("&gt;", ">", $code); 
	$code = str_replace(" &lt;?", "&lt;?", $code); 
	$code = str_replace("<br>", "", $code); 
	$code = str_replace("<br />", "", $code); 
	$code = str_replace("&quot; ", "\"", $code); 
	$code = str_replace("&quot;", "\"", $code); 
	if (!strpos($code,"<?") and substr($code,0,2)!="<?")
	{ 
		$code="<?".trim($code)."?>"; 
		$addedtags=1; 
	} 
	ob_start(); 
	$oldlevel=error_reporting(0); 
	highlight_string($code); 
	error_reporting($oldlevel); 
	$buffer = ob_get_contents(); 
	ob_end_clean(); 
	if(!empty($addedtags))
	{ 
		$openingpos = strpos($buffer,'&lt;?'); 
		$closingpos = strrpos($buffer, '?'); 
		$buffer = substr($buffer, 0, $openingpos).substr($buffer, $openingpos+5, $closingpos-($openingpos+5)).substr($buffer, $closingpos+5); 
	} 
	$buffer = "<br><div align=\"center\"><table border=\"1\" bordercolor=\"#000000\" width=\"90%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: collapse;\" bgcolor=\"#EFEFEF\"><tr><td class=\"std\"><font size=\"1\"><b>Code:</b><br></font><font style=\"font-size: 8pt;\">" . $buffer . "</font></td></tr></table></div>";
	return $buffer; 
}
?>

maar jpeetje nu ik je hier tog ben ff een vraagje: hoe kan ik als ik een forum maak de laadtijd beperkt houden?
 
Geplaatst door Barry_127
was een stackbased ubb?
Dat je geen reguliere expressies gaat gebruiken :)
maar jpeetje nu ik je hier tog ben ff een vraagje: hoe kan ik als ik een forum maak de laadtijd beperkt houden?
Op welk gebied ?
Je database goed inrichten, templates gebruiken, efficiënte code hebben, ...
 
Geplaatst door JPeetje
Dat je geen reguliere expressies gaat gebruiken :)

verdere uitleg aub

Op welk gebied ?
Je database goed inrichten, templates gebruiken, efficiënte code hebben, ...
zelf heb ik nog nooit met templates gewerkt dus als je me daar wat van wilt vertellen, efficiënte code, hoever moet ik dat opvatten en DB inrichten kan ik wel alleen ik denk dat mijne ook sneller worden als ik meer te weten kom over SQL queries samen voegen ofzo (dat je gelijk de met de user idee select uit de users tabel)

dus alles een beetje eigenlijk :)
 
Geplaatst door Barry_127
verdere uitleg aub
Reguliere expressies zijn in de ogen van échte programmeurs troep. Het zijn namelijk tijdvreters, het gebruik van enkele string functies gaat veel sneller (substr(), strpos(), strstr(), etc).
zelf heb ik nog nooit met templates gewerkt dus als je me daar wat van wilt vertellen, efficiënte code, hoever moet ik dat opvatten en DB inrichten kan ik wel alleen ik denk dat mijne ook sneller worden als ik meer te weten kom over SQL queries samen voegen ofzo (dat je gelijk de met de user idee select uit de users tabel)

dus alles een beetje eigenlijk :)
Daar kan ik niet 'wat' van vertellen, die onderwerpen zijn gewoon groot ;)
FF een beetje documentatie lezen ;)
 
Geplaatst door JPeetje
Reguliere expressies zijn in de ogen van échte programmeurs troep. Het zijn namelijk tijdvreters, het gebruik van enkele string functies gaat veel sneller (substr(), strpos(), strstr(), etc).

dus als ik voor mijn ubb preg_replace() en str_replace() gebruik kost het veewl tijd,

dan nu de vraag: hoe kan ik de sneller laten gebeuren?
 
Geplaatst door Barry_127
dus als ik voor mijn ubb preg_replace() en str_replace() gebruik kost het veewl tijd
Nein, str_replace() is een prima functie, preg_replace() is de boosdoener.
dan nu de vraag: hoe kan ik de sneller laten gebeuren?
substr(), strpos(), strstr(), etc :)
 
Is het al gelukt of zal ik maar een oplossing posten ? :p


*heeft namelijk net zelf een ubb parser zonder regexp's gemaakt*
 
Ja post eens, JP :)

Ben wel benieuwd, wil bij Dennahz.nl versie 9999 ook BB codes gebruiken :p
 
Versie 9999 ? Ik dacht dat je iets pas echt een versie kon noemen als dat iets af was ? :D:p
Stukje van mijn UBB parser:
PHP:
function ubbparser($string)
{
// [b] tekst [/b]
$array = explode('[/b]',$string);
$nieuwe_string = $string;
  if($array[0] != $string)
  {
  $nieuwe_string = '';
    foreach($array AS $key => $value)
    {
      if(strpos($value,'[b[b][/b]]') !== FALSE)
      {
      $value = (str_replace('[b[b][/b]]','<b>',$value) . '</b>');
      }
      else
      {
        if($key != (count($array) - 1))
        {
        $value = ($value . '[/b]');
        }
      }
    $nieuwe_string .= $value;
    }
  }

$string = $nieuwe_string; // Dit, voor als je hierna nog [i[i][/i]] enzo wil doen

return $string;
}
Werkt nog niet helemaal 100% perfect, dit:
[b][b][b]blaat[/b][/b][/b] wordt: blaat[/b][/b]. Maar je kan er zeker wel wat inspiratie uithalen ;)
 
Laatst bewerkt:
Geplaatst door BrEeZeR
Thx, al snap ik er weinig van op't eerste gezicht :o
Op 't eerste gezicht zou ik d'r ook niet veel van snappen waarom ik enkele dingen daar doe zoals ik ze daar doe :p
Maar toen ik bezig was met het maken van dat stukje code kwam ik enkele dingen tegen die niet hoorden, en daar moet je dan uitzonderingen voor maken ;)

Die if($array[0] != $string) dient bijv. zodat blaat niet vetgedrukt wordt ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan