Beste allemaal, hier een vraag voor gevorderden in regular expressions.
Van de volgende string:
'......<HTMLCODE ID="een">.........</HTMLCODE>.....<HTMLCODE ID="twee">.........</HTMLCODE>.....'
(waarbij de puntjes allerlei andere HTML code en tekst vertegenwoordigen)
moet het gedeelte '<HTMLCODE ID="een">.........</HTMLCODE>' vervangen worden
De volgende PHP code komt in de buurt
als het niet was voor het feit dat ereg_replace in dit geval een replacement uitvoert van '<HTMLCODE ID="een">' tot en met de LAATSTE '</HTMLCODE>', waardoor het tweede HTMLCODE blok verwijderd wordt.
Het doel is om juist tot en met de eerstvolgende '</HTMLCODE>' te komen.
Middels de volgende poging, waarvan de rest van de code hetzelfde blijft:
probeerde ik ervoor te zorgen dat hij alleen mag replacen als er tussen de openingscode en sluitcode niet nog een openingscode staat. Echter, ik geloof niet dat je op deze manier een complete string (<HTMLCODE) kan matchen.
Wie o wie kan mij helpen met het oplossen van bovenstaande situatie, zij het op een andere manier dan met regular expressions. Al moet het wel te doen zijn zou je zeggen.
Alvast bedankt!
Van de volgende string:
'......<HTMLCODE ID="een">.........</HTMLCODE>.....<HTMLCODE ID="twee">.........</HTMLCODE>.....'
(waarbij de puntjes allerlei andere HTML code en tekst vertegenwoordigen)
moet het gedeelte '<HTMLCODE ID="een">.........</HTMLCODE>' vervangen worden
De volgende PHP code komt in de buurt
PHP:
1
2
3
4
5
6
| $content = '......<HTMLCODE ID="een">.........</HTMLCODE>.....<HTMLCODE ID="twee">.........</HTMLCODE>.....'; $vervangende_string = 'nieuwe tekst'; $pattern = '(<HTMLCODE ID="een">).*(</HTMLCODE>)'; $replace = '\\1' . $vervangende_string . '\\2'; $result = ereg_replace($pattern, $replace, $content); |
als het niet was voor het feit dat ereg_replace in dit geval een replacement uitvoert van '<HTMLCODE ID="een">' tot en met de LAATSTE '</HTMLCODE>', waardoor het tweede HTMLCODE blok verwijderd wordt.
Het doel is om juist tot en met de eerstvolgende '</HTMLCODE>' te komen.
Middels de volgende poging, waarvan de rest van de code hetzelfde blijft:
PHP:
1
| $pattern = '(<HTMLCODE ID="een">)[^(<HTMLCODE)]*(</HTMLCODE>)'; |
probeerde ik ervoor te zorgen dat hij alleen mag replacen als er tussen de openingscode en sluitcode niet nog een openingscode staat. Echter, ik geloof niet dat je op deze manier een complete string (<HTMLCODE) kan matchen.
Wie o wie kan mij helpen met het oplossen van bovenstaande situatie, zij het op een andere manier dan met regular expressions. Al moet het wel te doen zijn zou je zeggen.
Alvast bedankt!