RegExp Problem

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

  • RegExp Problem

    Tach erstmal..

    Hab gerade versucht einen kleinen Textparser zu basteln, der bestimmte Strings aus einem anderen String ausliest und später durch Tags wie z.B. <span> usw.. ersetzt.. Bin aber schon am Anfang kläglich gescheitert.. Ich verstehe die Regular Expressions wohl nicht wirklich..

    Hier also was ich bisher versucht habe:
    PHP-Code:
    $cText "#1foo#2#3sucht#2#1faaraa";
        
    if( 
    Preg_Match"/(#?.+?){1}/s"$cText$aRegExp ) ) 
    {
        echo 
    'Welche gefunden:<br>';
        
        
    $i 1;
        
        echo 
    '&nbsp;&nbsp;' $aRegExp[0] . '<br>';
        
        while( IsSet( 
    $aRegExp[$i] ) )
        {
            echo 
    '&nbsp;&nbsp;' $aRegExp[$i] . '<br>';
            
    $i++;
        }
        

    In meinen wirren Träumen hätte es nun so ausgesehen, das alle #+einem Folgezeichen gefunden werden..
    Ausgabe am Ende hätte also so lauten sollen..
    #1
    #2
    #3
    #2
    #1
    Aber, wie gesagt, mein Pattern erfüllt das nicht ganz.. Oder liegt es an Preg_match? Wohl eher nicht, was?

    Kann mir jemand helfen und sagen, wie der Pattern aussehen muss, damit ich obiges Ergebnis erreiche?

    Habe bereits mit diversen Möglichkeiten wie z.B.
    PHP-Code:
    if( ereg('(#.?){1}'$cText$aRegExp ) ) 
    oder
    PHP-Code:
    if( ereg('(#.?){1}\b'$cText$aRegExp ) ) 
    experimentiert aber keine hat funktioniert..

    Wäre froh über Hilfe...
    Zuletzt geändert von Fritzgerald; 02.06.2004, 20:28.

  • #2
    eine # gefolgt von einem Zeichen ist als RegExp doch einfach #. oder nicht?
    hopka.net!

    Kommentar


    • #3
      Eigentlich wohl schon, aber steht im Array $aRegExp nur ein Eintrag und zwar #b Also der erste Treffer der gefunden wird.

      Kommentar


      • #4
        Eventuell schon mal so versucht:

        /#\d+?(.){1}/s


        ?
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          /#\d+?(.){1}/s funktioniert leider auch nicht.

          Damit wird $aRegExp[0] mit #1# gefüllt, alles andere bleibt leer..

          Liegt es eventuell doch an Ereg oder Preg_Match?
          In einem einfachen Templateparser, den ich erstellt habe funktioniert
          PHP-Code:
          if( ereg('\{(.*)\}'$cRow$aRegExp ) ) 
          wunderbar.. Dort wird eine htmldatei eingelesen und alle Tags im Format {TAG} rausgesucht und im Array $aRegExp gespeichert..
          Hätte echt nicht gedacht, das eine kleine Abwandlung hin zu #+zeichen so umständlich sein kann..

          Kommentar


          • #6
            dann probier mal preg_match_all - das findet bestimmt mehr.
            hopka.net!

            Kommentar


            • #7
              Tatsache, nach
              PHP-Code:
              if( Preg_Match_All"/#(.){1}/"$cText$aRegExp ) ) 
              sind alle Strings gefunden und in $aRegExp[0] als Multidimsionales Array gespeichert..

              Vielen Dank!

              Hat trotzdem jemand eine Erklärung warum es mit einem einfachem ereg nicht klappt, wo es mit diesem
              PHP-Code:
              if( ereg('{(.*)}'$cRow$aRegExp ) ) 
              Befehl so wunderbar klappt alle - und nicht nur den ersten - {TAGS} zu finden und zu filtern?
              Zuletzt geändert von Fritzgerald; 02.06.2004, 21:30.

              Kommentar

              Lädt...
              X