ich kann nicht mit preg_match etc. umgehen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ich kann nicht mit preg_match etc. umgehen

    Hi,

    ich habe einen Codeschnipsel gefunden, der mir Funktionen aus einem Script anzeigt, leider filtert dieser diese Funktionen nur unsauber, da er die Variablen usw. auch anzeigt.


    PHP-Code:

    $filename 
    'test.php';

       
    $str file_get_contents($filename);
       
    $count preg_match_all ("|[ ]+(.*)[\(](.*)[\)]|U"$str$outPREG_PATTERN_ORDER);

       for (
    $i=0$i<$count$i++) {
           if (!
    eregi('array',$out[1][$i])) {
           echo 
    '----> Funktion ='.$out[1][$i]."<br>\n";
       } 

    Ausgabe ist:

    ----> Funktion = $crypted_pw = crypt
    ----> Funktion = if
    ----> Funktion =|| empty
    ----> Funktion = include
    ----> Funktion = $link = mysql_connect
    ----> Funktion = mysql_select_db
    ----> Funktion = $row = mysql_fetch_row
    ----> Funktion = if
    ----> Funktion = $row2 = mysql_fetch_row
    ----> Funktion = print '<meta http-equiv="refresh" content="0; URL='.$LOGIN_URL.'?PHPSESSID='.session_id
    ----> Funktion = session_unset
    ----> Funktion = session_destroy
    ----> Funktion = include
    ----> Funktion =convest
    ----> Funktion = require
    ----> Funktion = $link = mysql_connect
    ----> Funktion = mysql_select_db
    ----> Funktion = or die
    ----> Funktion = if
    ----> Funktion = die
    ----> Funktion = $zeile = mysql_fetch_row
    ----> Funktion = $inhalt .= nl2br
    ----> Funktion = while
    ----> Funktion = $box1_query = mysql_query

    Es sollte aber so aussehen:


    ----> Funktion = crypt
    ----> Funktion = if
    ----> Funktion = empty
    ----> Funktion = include
    ----> Funktion = mysql_connect
    ----> Funktion = mysql_select_db
    ----> Funktion = mysql_fetch_row

    usw..

    Kann mir jemand helfen?


    Viele Grüsse

    David
    Zuletzt geändert von Yooda; 20.05.2004, 16:11.
    Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

  • #2
    Der Ausdruck hier sollte das gewünschte Ergebnis liefern:

    /(?<![a-z_0-9$])([a-z_][a-z_0-9]*)\s*\(.*\)/Ui

    Noch übersichtlicher wird es wenn Du dir angewöhnst, bei Kontroll-Strukturen (if, switch, for etc.) ein Leerzeichen zwischen Kommando und Klammer zu packen und bei Funktionen nicht, dann bringt dir der gleiche Ausdruck ohne \s* ausschließlich Funktionsaufrufe; mit \s bzw. \s+ bekommst du die Kontroll-Strukturen.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      WOW!

      Es funktioniert!!!

      Vielen Vielen Dank!!!
      Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

      Kommentar

      Lädt...
      X