andere mannier om ubb functie aan te roepen naast preg_replace

Status
Niet open voor verdere reacties.

Barry_127

Gebruiker
Lid geworden
20 jan 2003
Berichten
478
hoi

JPeetje vertelde mij dat preg_replace() niet goed is voor de snelheid van het laden van mijn site

nu heb ik deze functie:

PHP:
<?php
function bold($var)
{
   $var = "<b>" . $var . "</b>";
   return $var;
}
?>

ik roep hem normaal met preg_replace zo aan (zonder spaties voor de b natuurlijk):

PHP:
<?php
$text = preg_replace('_\[ b\](.*?)\[/ b\]_ise',"bold('\\1')",$text);
?>

maar dat is dus niet snel, hoe kan ik die functie sneller aan laten roepen zodat het niet teveel ten koste gaad van de laadtijd?
 
Laatst bewerkt:
Een parser voor UBB zoals bold maken kun je hier vinden, bestudeer 'm goed ;)
 
Een snel voorbeeldje dan :p
PHP:
<?
function parse_bold($string)
{
$b1 = strpos($string,'[[b][/b]b]');
$b2 = strpos($string,'[/b]');
  if(($b1 !== FALSE) AND ($b2 !== FALSE) AND ($b2 > $b1))
  {
  $deel1 = substr($string,0,$b1);
  $deel2 = '<b>' . substr($string,($b1 + 3),($b2 - ($b1 + 3))) . '</b>';
  $deel3 = substr($string,($b2 + 4),strlen($string));
  $string = ($deel1 . $deel2 . $deel3);
  }

return $string;
}

$tekst = 'Henk zei "[[b][/b]b]jaja ![/b]" en ging er toen vandoor met de rechter achterwiel van de auto';
echo parse_bold($tekst);
?>
Die +3 en +4 zijn om die [b][/b] te verbergen :)

Is dit meer begrijpbaar ? :)

// Edit: Werkt niet met meerdere 's, maar goed, tis een snel voorbeeldje :p
 
tot zover snap ik het redelijk maar nu komt tog de vraag over hoe het moet als er meerdere b's instaan (kan ik me goed voorstellen op een forum ;)
 
Ik ga niet alles doen, probeer zelf :p
Hints: Lusje, strrpos()

Overigens zal de UBB parser die ik in m'n vorige post gaf het vast ook ondersteunen :)
 
PHP:
 function parse_html($verhaal){
 
  $string = str_replace('[b*]', '<b>', $verhaal);
  $string = str_replace('[/b*]', '</b>', $verhaal);  
 
return ($verhaal);
}


$tekst = parse_html($verhaal);

Wel even de 2 * weghalen.....
 
Geplaatst door KaWouter
PHP:
 function parse_html($verhaal){
 
  $string = str_replace('[b*]', '<b>', $verhaal);
  $string = str_replace('[/b*]', '</b>', $verhaal);  
 
return ($verhaal);
}


$tekst = parse_html($verhaal);


Wel even de 2 * weghalen.....
PHP:
echo parse_html('[b][b][b][b][b][b][b]blaat');
Slordig dus :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan