Regex: case behouden
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 ;)
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 ;)
Gesponsorde koppelingen:
Code (php)
1
2
3
2
3
<?php
$tekst = preg_replace('_('.$zoekwoord.')_is','<span class="iets">\1</span>',$text);
?>
$tekst = preg_replace('_('.$zoekwoord.')_is','<span class="iets">\1</span>',$text);
?>
Gokje...
Doet het! (o ja je had een typo, het is \\1)
Thanks Willem-Jan!
Thanks Willem-Jan!
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
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.
geen :)
Je gebruikt gewoon die die je verder niet binnen je regex gebruikt zodat je niet hoeft te klooien met escapen.
Je gebruikt gewoon die die je verder niet binnen je regex gebruikt zodat je niet hoeft te klooien met escapen.



