Door
Ariën
op 21-09-2017 20:21
gewijzigd op 21-09-2017 20:23
1.711 views
Ik heb hier een mooie method van een class die non-SSL URL's omzet naar mijn SSL camo-proxy.
Het werkt echt heel mooi, maar... ik merk dat setAttribute op lijn 11 wordt genegeerd.
Ik zie dat er in de img-tag die in de for-loop aangeroepen wordt wel netjes de URL wordt ge-replaced, maar er komt geen nieuw attribuut bij die 'data-original-src' heet?
This function returns a new instance of class DOMNodeList containing all the elements with a given local tag name.
Oftewel, je bent naar alle waarschijnlijkheid gegevens in een aparte kopie aan het wijzigen die alleen binnen de scope van de functie bestaat, het origineel blijft ongewijzigd.
Meerdere oplossingen mogelijk. Je zou bijvoorbeeld de functie in eerste instantie rechtstreeks het object (DOMDocument) kunnen voeren. Objecten zijn call by reference dus ben je daarmee direct in het origineel aan het werken.
Met je str_replace() vervang je alleen de src in de originele HTML ($string). Als je ook het data-original-src terug wilt zien zul je de hele <image> tag moeten vervangen.
Als ik zo denk kan ik beter met een foreach alle attributen langsgaan, element opnieuw opbouwen, en de eerste img weer wissen. Dan ben je pas robuust bezig. ;-)