kostenloser Webspace werbefrei: lima-city


Komplizierter Such und Ersetzvorgang

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Moin,

    ich stehe vor einem derzeit für mich unlösbaren Problem. Vorab ein Beispiel:

    <?php
    
    $xyz = 'Hallo Welt';
    $abc = 'Dies ist ein Test.';
    
    ${"GLOBALS"}["test1"] = 'xyz';
    ${"GLOBALS"}["test2"] = 'abc';
    
    echo 'xxx - '.${${"GLOBALS"}["test1"]}.' - '.${${"GLOBALS"}["test2"]}.' - xxx';
    ?>


    Der o.g. Code erzeugt folgende Ausgabe:

    xxx - Hallo Welt - Dies ist ein Test. - xxx


    Die Ausgabe selbst ist aber völlig uninteressant. Mein Problem bzw. mein Vorhaben ist folgendes:

    Der o.g. Code wird als String hinterlegt und ich möchte nun diesen String nach

    {${"GLOBALS"}["xxxxxxxxxx"]}


    durchsuchen. Das würde ich ja gerade noch hinbekommen ;) xxxxxxxxxx deshalb, weil dies variabel ist d.h. nicht gleichbleibend. Tut aber auch nichts zur Sache.

    Weiter gehts... Wenn ich nun sämtliche Vorkommnisse gefunden habe, möchte ich diese mit dem eigentlichen Inhalt der zuvor gesetzten Variablen ersetzen.

    Lange Rede, kurzer Sinn:

    Aus dem o.g. Code bzw. String soll am Ende dies werden:

    <?php
    
    $xyz = 'Hallo Welt';
    $abc = 'Dies ist ein Test.';
    
    ${"GLOBALS"}["test1"] = 'xyz';
    ${"GLOBALS"}["test2"] = 'abc';
    
    echo 'xxx - '.$xyz.' - '.$abc.' - xxx';
    ?>


    Jemand eine Idee, wie sich das umsetzen lassen würde? Dass es geht, weiß ich. Nur wie, kriege ich noch nicht wirklich raus.

    PS: Der eigentliche Code ist mehrere tausend Zeilen lang, weshalb ich die Aufgabe nicht "mal eben" per Hand durchführen kann...

    EDIT:

    Ich habe es nun so probiert:

    <?php
    $str = "<?php
    
    \$xyz = 'Hallo Welt';
    \$abc = 'Dies ist ein Test.';
    
    \${\"GLOBALS\"}[\"test1\"] = 'xyz';
    \${\"GLOBALS\"}[\"test2\"] = 'abc';
    
    echo 'xxx - '.\${\${\"GLOBALS\"}[\"test1\"]}.' - '.\${\${\"GLOBALS\"}[\"test2\"]}.' - xxx';
    ?>";
    
    preg_match_all('/\$\{"GLOBALS"\}\["(.*?)"\] = \'(.*?)\';/i', $str, $arr, PREG_SET_ORDER);
    
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
    ?>


    Das funktioniert soweit auch. $arr[1] und $arr[2] beinhalten genau das, was ich für meine Suche benötige. Jetzt muss ich das Ganze nurnoch richtig ersetzen...

    EDIT:

    Okay... Ersetzung scheint auf den ersten Blick so zu funktionieren:

    foreach($arr as $item) {
    	$str = str_replace('${${"GLOBALS"}["'.$item[1].'"]}', '$'.$item[2].'', $str);
    }


    EDIT:

    Okay.... Scheint zu funktionieren, wie ich das gerne hätte :)

    Beitrag zuletzt geändert: 20.8.2011 16:29:16 von fabo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kann das sein, dass es ist, was ich denk'? du versuchst PHP-source mittem im proglauf zu ändern? wenn das der fall ist, frage dich auch nach sicherheit!

    Beitrag zuletzt geändert: 20.8.2011 23:59:31 von hemiolos
  4. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    1. Nein, tu ich nicht :)

    2. Sicherheit ist kein Problem. Das Ganze ist für lokale Zwecke gedacht :)
  5. fabo schrieb:
    1. Nein, tu ich nicht :)
    2. Sicherheit ist kein Problem. Das Ganze ist für lokale Zwecke gedacht :)

    zu 1.:
    <?php
    $str = "<?php
    
    \$xyz = 'Hallo Welt';
    \$abc = 'Dies ist ein Test.';
    
    \${\"GLOBALS\"}[\"test1\"] = 'xyz';
    \${\"GLOBALS\"}[\"test2\"] = 'abc';
    
    echo 'xxx - '.\${\${\"GLOBALS\"}[\"test1\"]}.' - '.\${\${\"GLOBALS\"}[\"test2\"]}.' - xxx';
    ?>";
    
    preg_match_all('/\$\{"GLOBALS"\}\["(.*?)"\] = \'(.*?)\';/i', $str, $arr, PREG_SET_ORDER);
    
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
    ?>
    das sieht mir aber verdammt genau danach aus, dass du php runtime manipulierst.

    zu 2.:
    man sollte das wort sicherheit (in punkto IT) - wenn überhaupt - nur zur not in den mund nehmen. (alles andere ist wunschdenken ;o)
  6. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Es geht einfach darum, ein paar lokale Dateien von "Unreinheiten" zu bereinigen. Ich könnte das genau so gut per Hand erledigen, aber bei über 5.000 Zeilen Code vergeht Einem der Spaß. Deswegen der Versuch der Automatisierung.

    Wie bereits gesagt, interessiert die Sicherheit hier nicht, weil das SO niemand jemals zu Gesicht bekommen wird. Nicht einmal mein Server ;)

    Beitrag zuletzt geändert: 22.8.2011 3:32:10 von fabo
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!