Zoals in de titel te lezen is, wil ik de tekst tussen twee strings vervangen door een waarde die uit mijn database wordt opgehaald en die wordt bepaald door de tekst tussen de twee strings. Om het een en ander te verduidelijken heb ik hier een voorbeeld.
Ik wil bijvoorbeeld [ i ]appel[ /i ] vervangen door een link naar de productpagina van appel. In mijn MySQL database gebruik ik deze opbouw:
Elke keer als de text geparsed wordt moet elke tekst tussen [ i ] en [ /i ] veranderd worden in een link naar het product, indien beschikbaar in de database.
Het probleem is niet het linken naar de database of het ophalen van de databasegegevens, dat krijg ik allemaal prima voor elkaar. Het probleem is het php gedeelte van het vinden en vervangen.
Het is niet mogelijk om alle producten en producturls van te voren op te halen en in een array te zetten, het gaat namelijk om meer dan 500.000 producten, dus dat komt de performance niet ten goede.
De string tussen [ i ] en [ /i ] moet dus opgehaald worden en aan de hand van die string moet met een select query de juiste database entry worden opgezocht.
Ik ben hier nu al dagen mee bezig, maar kan geen werkende oplossing vinden. Ik heb pogingen gedaan met diverse split en replace van PHP, maar dat mocht niet baten. Mijn oplossingen worden inmiddels zo complex dat ik een eventuele eenvoudige oplossing niet meer zie. Ik ben heel benieuwd of iemand mij hier mee kan helpen!
Ik wil bijvoorbeeld [ i ]appel[ /i ] vervangen door een link naar de productpagina van appel. In mijn MySQL database gebruik ik deze opbouw:
productid | productnaam | producturl |
1 | appel | www.appel.nl |
2 | peer | www.peer.nl |
Elke keer als de text geparsed wordt moet elke tekst tussen [ i ] en [ /i ] veranderd worden in een link naar het product, indien beschikbaar in de database.
Het probleem is niet het linken naar de database of het ophalen van de databasegegevens, dat krijg ik allemaal prima voor elkaar. Het probleem is het php gedeelte van het vinden en vervangen.
Het is niet mogelijk om alle producten en producturls van te voren op te halen en in een array te zetten, het gaat namelijk om meer dan 500.000 producten, dus dat komt de performance niet ten goede.
De string tussen [ i ] en [ /i ] moet dus opgehaald worden en aan de hand van die string moet met een select query de juiste database entry worden opgezocht.
Ik ben hier nu al dagen mee bezig, maar kan geen werkende oplossing vinden. Ik heb pogingen gedaan met diverse split en replace van PHP, maar dat mocht niet baten. Mijn oplossingen worden inmiddels zo complex dat ik een eventuele eenvoudige oplossing niet meer zie. Ik ben heel benieuwd of iemand mij hier mee kan helpen!
[ Voor 8% gewijzigd door Vissie op 12-10-2009 12:15 . Reden: de tags waren niet zichtbaar ]