[php] output buffering - bufferen onderbreken en verdergaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil een highlight functie maken met ob_start():

PHP:
1
2
3
4
5
6
7
8
9
10
ob_start("callback");
// note: in de functie callback wordt een str_replace aangeroepen.
// Deze functie highlight een bepaalde reguliere expressie.

echo 'font:';
echo '<font style="color: red;">';
echo 'arial';
echo '</font>';

ob_end_flush();


Ik wil nu met mijn zoekfunctie zoeken op het woord font. Dit woord zal dus gehighlight worden.
Echter, de niet-ob-noob voelt hem al aankomen, de html wordt nu ook gereplaced. Iets wat niet de bedoeling is. Is hier een bepaalde methode voor, behalve om elke regel van de huidige buffer door een reguliere expressie te halen - iets wat natuurlijk ook zou kunnen?

Ik wou het eerst even vragen voordat ik mbv reg. expressies de hele buffer ga checken.

[sub]Oftewel: kijken of het gezochte woord niet tussen <(.)> staat .

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Hiervoor zijn er standaard oplossingen:
http://ubernostrum.dyndns.org/code/highlight/

Maar als je het zelf wilt oplossen: ik denk dat je dan niet ontkomt aan regular expressions te gebruiken. :/

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 17-09 21:58

BHR

Ikzelf heb deze functie wel eens gebruikt (maar toch via smarty post filtering)

PHP:
1
2
3
4
5
6
7
function stringReplacer($tpl_output, &$smarty)
{
    $search = 'woordje';
    $replace = 'woordje';
    return preg_replace('/(>[^<]+?)(' . $search . ')([^>]+?<)/i',
        '\1' . $replace . '\3', $tpl_output);
}

No amount of key presses will shut off the Random Bug Generator