[PHP] Begrippen vervangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit met het volgende probleem. Ik heb een array met begrippen. Daarnaast heb ik een grote lap tekst. Nu wil ik alle begrippen vervangen in de lap tekst waarbij ik het originele woord bewaar.

Dus wanneer ik de volgende array met begrippen heb:

code:
1
2
3
4
5
<?php
$begrippen = array(
     'MAN', 'test', 'Aap'
);
?>


En ik heb de volgende tekst:

code:
1
2
3
<?php
$tekst = 'Dit is een test, geschreven door een man.';
?>


Dan wil ik dus een functie bakken die alle begrippen vervangt in de tekst. De uitvoer in dit voorbeeld zou moeten lijken op:

code:
1
Dit is een <a href="url">test</a>, geschreven door een <a href="url">man</a>.


Wanneer ik dit met een case insensitive search replace doe dan wordt de tekst:

code:
1
Dit is een <a href="url">test</a>, geschreven door een <a href="url">MAN</a>.


De originele tekst wordt dus overhoop gehaald. Dit is niet de bedoeling. Ik heb echter nog geen stukje PHP code weten te bedenken die dit voor me zou kunnen doen.

Ik hoop dat iemand me hiermee op weg kan helpen :D

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

preg_replace of preg_replace_callback als je exotische dingen wil doen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bekend met de genoemde functies. Echter zie ik nog geen manier om daarmee mijn probleem op te lossen. :(

Acties:
  • 0 Henk 'm!

  • AlteKiet
  • Registratie: April 2003
  • Laatst online: 15:43
Ik snap geen hout van wat je nou precies wilt bereiken.
Wil je dat nog eens goed uitleggen? Of misschien wil je laten zien waar je _eigenlijk_ mee bezig bent. :)

Opeens snap ik 't. Je wilt van een begrip een link maken zonder de term zelf te wijzigen...

Ik zou dat met preg_replace doen inderdaad. Dan gebruik je 'back references'.
code:
1
$text = preg_replace("/(foo)/i", "<a href=\"url\">\\1</a>", $text);

foo moet tussen haakjes. \\1 verwijst naar de eerste treffer tussen haakjes (subpattern). "i" voor case _i_nsensitive

Succes ermee

[ Voor 81% gewijzigd door AlteKiet op 23-10-2005 02:36 ]