Versio

Regex: case behouden

Overzicht Reageren

PHP erik

PHP erik

25/07/2006 10:01:00
Quote Anchor link
Zou iemand voor mij even een regex replace kunnen schrijven die het volgende doet. Er wordt gezocht op bijvoorbeeld 'mail', maar ik wil in de resultaten zowel 'mail' als 'Mail' als 'MAIL' markeren met een background.

Nu kan ik str_replace() of str_ireplace() gebruiken, maar dan vervangt 'ie de woorden in mijn originele tekst met de case van de gebruiker, terwijl ik wil dat 'Mail' wel gewoon 'Mail' blijft en niet 'mail' wordt.

Dus het is net als een UBB parser maar dan met het zoekwoord van de gebruiker $_GET['search'].

$text = '<h1>Mail</h1>Hiermee stuur je een e-mail';

Dan wil ik dus Mail en mail gemarkeerd hebben met <span style="iets"> ervoor en </span> erna. Dat je dus krijgt:

$text = '<h1><span style="iets">Mail</span></h1>Hiermee stuur je een e-<span style="iets">mail</style>';

Alvast bedankt. Ik ben geen regex-wonder ;)
 
PHP hulp

PHP hulp

25/05/2012 14:19:54
Gesponsorde koppelingen:
 
Willem Jan Z

Willem Jan Z

25/07/2006 10:27:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$tekst
= preg_replace('_('.$zoekwoord.')_is','<span class="iets">\1</span>',$text);
?>


Gokje...
 
PHP erik

PHP erik

25/07/2006 10:30:00
Quote Anchor link
Doet het! (o ja je had een typo, het is \\1)

Thanks Willem-Jan!
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 
Roy Bongers

Roy Bongers

25/07/2006 10:39:00
Quote Anchor link
Wat is eigenlijk 't verschil tussen een _ een / en een # of @tje. Want ik heb ze allemaal al eens voor en na een regex expression zien staan van de preg_ functies.
 
Jelmer rrrr

Jelmer rrrr

25/07/2006 12:29:00
Quote Anchor link
geen :)

Je gebruikt gewoon die die je verder niet binnen je regex gebruikt zodat je niet hoeft te klooien met escapen.
 



Overzicht Reageren