setAttribute wordt genegeerd?

Gestart doorAarclay14 reacties661 weergaven

15 berichten · pagina 1 van 1

Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ik heb hier een mooie method van een class die non-SSL URLs 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?

Waarom negeert hij dit?

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #FF8000]//$imgarray = array();[/COLOR]
        [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) {[/COLOR]
            [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/str_replace"]str_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]),[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]
            [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
        }
        }
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700];
    }[/COLOR]
?>


Edit:
Ik doe inderdaad niks met $string, dus gebeurt er weinig mee yummieIk ga eens kijken of ik de img-tag opnieuw kan opbouwen met alle bestaande attributen.
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Probeer dit eens:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #FF8000]//$imgarray = array();[/COLOR]
        [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as &[/COLOR][COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) {[/COLOR]
            [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/str_replace"]str_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]),[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]
            [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
        }
        }
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700];
    }[/COLOR]
?>
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
@Milan Wow... Zomaar een hele nieuwe error aangeleerd redface
Quote:
Fatal error: An iterator cannot be used with foreach by reference in D:**knip**classesCamo.class.php on line 27 (die foreach dus)

Ik ben ook al bezig om met DOMdocument de hele img-tag opnieuw te schrijven, en te replacen inclusief de camo-URL, maar toch was ik benieuwd of het niet makkelijker kan. Met iets van een reference, maar dan op een goede manier. omdat foreach niet lukt.
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Iemand nog een idee?
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Komt ie uberhaupt wel in de if terecht?
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Die werkt allemaal prima, http-urls worden netjes ge-replaced enzo... smile
Alleen wil ik een extra attribuut meegeven, en daar loop ik op vast, tenzij ik ik fratsen moet uitvoeren om met DOMDocument deze hele tag uit te lezen, opnieuw op te bouwen, maar dat lijkt mij behoorlijk onnodig.

iemand zei dit ook al:

Quote:
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 Afbeelding niet beschikbaarDe oorspronkelijke afbeelding of link ontbreekt. tag moeten vervangen.

True, maar dit lijkt me toch een beetje overdreven.
Zijn er nog alternatieven verder?
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
Die werkt allemaal prima, http-urls worden netjes ge-replaced enzo... smile
Alleen wil ik een extra attribuut meegeven, en daar loop ik op vast, tenzij ik ik fratsen moet uitvoeren om met DOMDocument deze hele tag uit te lezen, opnieuw op te bouwen, maar dat lijkt mij behoorlijk onnodig.

iemand zei dit ook al:
Quote:
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 Afbeelding niet beschikbaarDe oorspronkelijke afbeelding of link ontbreekt. tag moeten vervangen.

True, maar dit lijkt me toch een beetje overdreven.
Zijn er nog alternatieven verder?

Kun je niet gewoon dat domdocument retourneren i.p.v. de string?
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ziet er logisch uit....
Ill will try!
Wordt vervolgd!
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
@Milan: Nah, dat $doc helpt niet, en als ik

$html =  $doc->loadHTML($string);


gebruik met $html i.p.v. $string in de str_replace, dan kan dat inderdaad niet, omdat er een boolean uit komt. Of dacht je wat anders?
Hmmz
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
    [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #FF8000]//$imgarray = array();[/COLOR]
        [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) {[/COLOR]
            [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/str_replace"]str_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]),[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700]);[/COLOR]
            [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
        }
        }
    }[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700]();
    }[/COLOR]
?>
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Zat ik ook al aan te denken, maar saveHTML maakt meteen een heel HTML-document ervan met de nodige doctype etc... nosmile
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ik heb dit laatste maanden even op een lager pitje gezet, maar ik wil er mee verder gaan, maar zit nog steeds te worstelen voor een goede oplossing, om alleen de img-tag aan te passen.

De oplossing van Milan werkt wel, echter geeft die saveHTML meteen een onnodige HTML-structuur eromheen met onder meer:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>


Wat dus de validheid van mijn HTML-document sloopt.

Ik heb wel iets bedacht om met $image->hasAttributes() alles attributen uit te lezen, in een arrayte pompen, deze uit te lezen, en dit opnieuw toe te voegen aan de img-tag, maar dat lijkt mij een overdreven karwei. Wat ik wil moet toch sneller kunnen?

Edit:
Ik denk dat het zinvoller is om te leven met deze doctype, en deze maar te strippen na de loadHTML.
Ik heb dit draadje op SO gevonden. Ik ga er mee verder frotten: https://stackoverflow.com/questions/4879946/how-to-savehtml-of-domdocument-without-html-wrapper

Hoewel duidelijk is dat het toevoegen van LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD aan de loadHTML echt het meest debielste doet met het random toevoegen van extra

s

emo. We gaan lekker verder zoeken!
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Het is getackeld, en na wat testscripts lijkt het goed te werken:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/global"]global[/URL] [COLOR= #0000BB]$settings[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
         [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700],[/COLOR]LIBXML_HTML_NODEFDTD[COLOR= #007700]);[/COLOR]
         [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]
    
         [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
         [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
         [URL="http://www.php.net/if"]if[/URL][COLOR= #007700](([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) && ![/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]getHostname[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]),[/COLOR][COLOR= #0000BB]$settings[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_disallowed_domains[/COLOR][COLOR= #007700]])) {[/COLOR]
             [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-source[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
             [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
             [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);[/COLOR] 
            [COLOR= #FF8000]//$string = str_replace($image->getAttribute(src), $camo, $string);// therefore: $doc->saveHTML()[/COLOR]
             [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
         }
         }[/COLOR]
    [COLOR= #0000BB]$trim_off_front[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/strpos"]strpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR][COLOR= #DD0000]<body>[/COLOR][COLOR= #007700]) +[/COLOR] [COLOR= #0000BB]6[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$trim_off_end[/COLOR] [COLOR= #007700]= ([/COLOR][URL="http://www.php.net/strrpos"]strrpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR][COLOR= #DD0000]</body>[/COLOR][COLOR= #007700])) -[/COLOR] [URL="http://www.php.net/strlen"]strlen[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700]());[/COLOR]
    [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR] [COLOR= #0000BB]$trim_off_front[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$trim_off_end[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700];
    }
    }[/COLOR]
?>


Ranzig? Ja!
Maar ik kon niks beters vinden dan dit. Veel andere oplossingen hadden weer zijn nadelen.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
Het is getackeld, en na wat testscripts lijkt het goed te werken:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/global"]global[/URL] [COLOR= #0000BB]$settings[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
         [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700],[/COLOR]LIBXML_HTML_NODEFDTD[COLOR= #007700]);[/COLOR]
         [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]
    
         [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
         [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
         [URL="http://www.php.net/if"]if[/URL][COLOR= #007700](([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) && ![/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]getHostname[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]),[/COLOR][COLOR= #0000BB]$settings[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_disallowed_domains[/COLOR][COLOR= #007700]])) {[/COLOR]
             [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-source[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
             [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
             [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);[/COLOR] 
            [COLOR= #FF8000]//$string = str_replace($image->getAttribute(src), $camo, $string);// therefore: $doc->saveHTML()[/COLOR]
             [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
         }
         }[/COLOR]
    [COLOR= #0000BB]$trim_off_front[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/strpos"]strpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR][COLOR= #DD0000]<body>[/COLOR][COLOR= #007700]) +[/COLOR] [COLOR= #0000BB]6[/COLOR][COLOR= #007700];[/COLOR]
    [COLOR= #0000BB]$trim_off_end[/COLOR] [COLOR= #007700]= ([/COLOR][URL="http://www.php.net/strrpos"]strrpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR][COLOR= #DD0000]</body>[/COLOR][COLOR= #007700])) -[/COLOR] [URL="http://www.php.net/strlen"]strlen[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700]());[/COLOR]
    [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR] [COLOR= #0000BB]$trim_off_front[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$trim_off_end[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700];
    }
    }[/COLOR]
?>
Ranzig? Ja!
Maar ik kon niks beters vinden dan dit. Veel andere oplossingen hadden weer zijn nadelen.

Ik erger me een beetje aan de indention clown
Spoiler tonen
[COLOR= #0000BB]<?php[/COLOR]

[URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] parse[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700])
{[/COLOR]
    [URL="http://www.php.net/global"]global[/URL] [COLOR= #0000BB]$settings[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]settings[COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_enabled[/COLOR][COLOR= #007700]] ==[/COLOR] true[COLOR= #007700]) {[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR] [COLOR= #007700]= new[/COLOR] DOMDocument[COLOR= #007700]();[/COLOR]
        [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]loadHTML[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700],[/COLOR] LIBXML_HTML_NODEFDTD[COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]getElementsByTagName[COLOR= #007700]([/COLOR][COLOR= #DD0000]img[/COLOR][COLOR= #007700]);[/COLOR]

        [URL="http://www.php.net/foreach"]foreach[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$images[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]) {[/COLOR]
            [COLOR= #0000BB]$url[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]getAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700]);[/COLOR]
            [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700](([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700]) !=[/COLOR] [COLOR= #DD0000]https://[/COLOR][COLOR= #007700]) && ![/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]getHostname[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]),[/COLOR] [COLOR= #0000BB]$settings[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_disallowed_domains[/COLOR][COLOR= #007700]])) {[/COLOR]
                [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]data-original-source[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
                [COLOR= #0000BB]$camo[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]proxy_url[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]);[/COLOR]
                [COLOR= #0000BB]$image[/COLOR][COLOR= #007700]->[/COLOR]setAttribute[COLOR= #007700]([/COLOR][COLOR= #DD0000]src[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);[/COLOR]
                [COLOR= #FF8000]//$string = str_replace($image->getAttribute(src), $camo, $string);// therefore: $doc->saveHTML()[/COLOR]
                [URL="http://www.php.net/unset"]unset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$camo[/COLOR][COLOR= #007700]);
            }
        }[/COLOR]
        [COLOR= #0000BB]$trim_off_front[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/strpos"]strpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR] [COLOR= #DD0000]<body>[/COLOR][COLOR= #007700]) +[/COLOR] [COLOR= #0000BB]6[/COLOR][COLOR= #007700];[/COLOR]
        [COLOR= #0000BB]$trim_off_end[/COLOR] [COLOR= #007700]= ([/COLOR][URL="http://www.php.net/strrpos"]strrpos[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR] [COLOR= #DD0000]</body>[/COLOR][COLOR= #007700])) -[/COLOR] [URL="http://www.php.net/strlen"]strlen[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700]());[/COLOR]
        [COLOR= #0000BB]$string[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$doc[/COLOR][COLOR= #007700]->[/COLOR]saveHTML[COLOR= #007700](),[/COLOR] [COLOR= #0000BB]$trim_off_front[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$trim_off_end[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$string[/COLOR][COLOR= #007700];
    }
}[/COLOR]
?>
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Is het zo erg dan puh ?
Gelukkig heb ik dit al lang in mijn code netjes geident yummie
(wat een vervoegd woord)

En lijn 14 is nu:

[COLOR= #0000BB]<?php[/COLOR]
         [URL="http://www.php.net/if"]if[/URL][COLOR= #007700](([/COLOR][URL="http://www.php.net/substr"]substr[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]7[/COLOR][COLOR= #007700]) ==[/COLOR] [COLOR= #DD0000]http://[/COLOR][COLOR= #007700]) && ![/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]getHostname[COLOR= #007700]([/COLOR][COLOR= #0000BB]$url[/COLOR][COLOR= #007700]),[/COLOR][COLOR= #0000BB]$settings[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]camo_disallowed_domains[/COLOR][COLOR= #007700]])) {[/COLOR]
?>


Anders probeert de functie eventuele relatieve paden (van je https-site!) aan camo te voeren, wat geen succes is.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren