Filter für zsammengefügtes array

  • Hey leute ich verzweifel langsam.


    Ich habe angefangen mein (teils veraltetes) grundgerüst meiner page neu auszuarbeiten.
    Jetzt stehe ich vor der netten aufgabe einen filter zu basteln der mir alle html,css und js codes aus den get vars holt. (klingt ja logisch oder ??)


    Nun habe ich mir folgendes überlegt gehabt:


    PHP
    1. <span class="syntaxdefault"><br /></span><span class="syntaxcomment">//aus allen get vars ein array machen (simpel weil foreach als filterschleife genutzt werden kann)<br /></span><span class="syntaxdefault">$geta </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> array_merge</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> <br /><br /></span><span class="syntaxcomment">//schleife zum durchlaufen der funktionen zum filtern<br /></span><span class="syntaxdefault"> foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$geta as $getavar</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//$geta = addslashes($getavar);<- ergibt nur string ausgabe (immer den letzten im get array) und kein array  bei mehreren datensätzen die daten bleiben unverändert<br /></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//$geta = htmlspecialchars($getavar);<- ergibt nur string ausgabe (immer den letzten im get array) und kein array  bei mehreren datensätzen die daten bleiben unverändert<br /></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//$geta = htmlentities($getavar);<- ergibt nur string ausgabe (immer den letzten im get array) und kein array  bei mehreren datensätzen die daten bleiben unverändert<br /></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//$geta = strip_tags($getavar);<- ergibt nur string ausgabe (immer den letzten im get array) und kein array  bei mehreren datensätzen die daten bleiben unverändert<br /></span><span class="syntaxdefault">   $geta </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'<'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'&lt;'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$geta</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">#<- funktioniert seltsamerweise<br /></span><span class="syntaxdefault">   $geta </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'>'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'&gt;'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$geta</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">#<- ^^ dito wie darüber<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    die ausgabe: (bei den auskommentierten funktionen) {übergebene vars *testweise*}=>http://127.0.0.1/test.php?p=<a href="">&go=page

    Code
    1. string(4) "page"


    Die ausgabe wenn ich die funktionen auskommentiere und nur die str_replace zeilen nutze:

    Code
    1. array(2) {
    2. ["p"]=>
    3. string(17) "&lt;a href=""&gt;"
    4. ["go"]=>
    5. string(4) "page"
    6. }


    Kann mir mal jemand sagen was ich da falsch mach ich würd ungern für jedes zeichen das ich haben will ne neue regel schreiben!
    (ja ich weiß ich könnte auch preg_ und arrays nutzen aber da müsst ich es ja auch schreiben !)


    Edit1*
    Ich sollte wohl anmerken das ich die funktionen nur teste und nicht so verwenden würde wie sie da stehen !! weil htmlentities und strip_tags in ein und der selben funktion eig schwachsinn sind !


    Für eventuelle ideen wäre ich dankbar...


    LG
    R4Zz0R

  • Du hast da einen kleinen Logik Fehler in deiner foreach.


    Denn du überschreibst ja das Array mit deinem Ergebnis, und du holst dir die einzelnen Datensätze in die Variable $getavar.
    Aber jagst das Array direkt durch..


    Verständlich was ich meine ?


    str_replace, kann ganze Arrays abarbeiten, daher klappt das auch ohne die foreach.


    Also statt das Ergebnis in $geta zu speichern, es in ein eigenes Array $andere[] = bla();


    Greetz TimTim

  • @ timtim:
    hmm... habe mich warscheinlich ein wenig falsch ausgedrückt.
    Es geht mir nicht um die str_replace sondern um die anderen funktionen.
    Die lassen sich nicht verwenden ohne aus dem array einen string zu machen und mir nur den letzten übergebenen string auszugeben.(also das letzte element im array)


    Die str_ funktionen habe ich nur zum testen eingefügt weil ich wissen wollte ob überhaupt irgentwas funktioniert.
    Hauptsächlich wollte ich auf vorhandene funktionen (strip_tags, htmlentities ect. ) zurückgreifen.


    (aber danke für den tipp das str_replace arrays komplett bearbeiten kann wusst ich noch nicht ! )


    Diese wiederum verhalten sich wie oben beschrieben.


    Die daten in einem neuen array zu speichern würde ich gerne vermeiden.


    Aber ich hab da schon ne idee... XD danke hast mich da auf was gebracht was mir noch nicht eingefallen ist 8)


    Melde mich später wenn ich das ganze ausgearbeitet habe nochmal und poste das ergebnis dann.


    /*EDIT*/


    Sooo habe nun getestet :


    Ausgabe ist->


    und gelöst ist es durch->


    PHP
    1. <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">foreach (</span><span class="syntaxdefault">$geta </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$getid </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$getavar</span><span class="syntaxkeyword">) {<br /> </span><span class="syntaxdefault">$geta</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$getid</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">htmlspecialchars</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$getavar</span><span class="syntaxkeyword">);<br /> }<br /> </span><span class="syntaxdefault"></span>


    Eigentlich hätte ich ja selber drauf kommen können das ich meiner foreach auch sagen muss das es das pro element im array machen muss... :oops:


    Naja man kann nicht immer alles richtig machen getreu dem motto "Irren ist Menschlich


    Thx für die kleine denkhilfe @ timtim.


    LG


    R4Zz0R

  • ja wie gesagt mir fiel gestern auf das ich ja auch meiner foreach sagen muss das sie in jedem element des arrays die funktion anwenden muss, gerade das überschreiben hab ich nähmlich vergessen zu beachten :P


    OT:
    Sagtmal was is den nun eigentlich mit der suchfunktion ?
    Hatte dazu nochmal was geschrieben aber scheinbar scheint das interesse ja abgeklungen zu sein.


    LG
    R4Zz0R