Ankündigung

Einklappen
Keine Ankündigung bisher.

Brauche mal Hife bei regex umbau

Einklappen

Neue Werbung 2019

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

  • Brauche mal Hife bei regex umbau

    Hallo Leute,
    ich habe dieses regex:

    PHP-Code:
    preg_match_all("%\([^\)]*\)%"$Text$Match); 
    Das such ja zwischen () ich möchte aber das es zwischen || sucht.
    Wenn ich nun die () mit || ersetzte findet er nichts.
    Kann mir wer sagen wo ich meinen Denkfehler habe?

    Danke und Gruß
    René

  • #2
    Wenn ich nun die () mit || ersetzte findet er nichts.
    Doch funktioniert einwandfrei.

    Kann mir wer sagen wo ich meinen Denkfehler habe?
    Nein, da du den Code nicht zeigst, mit dem du es versucht hast.

    Kommentar


    • #3
      Du hast ja mal wieder Recht.
      Ich habe heute Morgen nach viel zu wenig Schlaf die 3te Klammer übersehen.
      Nachdem ich gerade etwas Schlaf nachgeholt habe geht es.

      Danke und Gruß
      René

      Kommentar


      • #4
        Hallo protestix

        nun habe ich einen Nachtrag und auch mit Code.

        Sinn des Ganzen soll sein das ich in einem String Texte ersetze die ich vorher in meiner Registry gespeichert habe zu ersetzten.

        Könnte aber genauso so eine Session Var sein möchte aber lieber es mit meiner Registry machen.

        So nun der Code:

        PHP-Code:
              Registry::set('Text1''den Test');
              
        Registry::set('Text2''PHP');



              
        $Text "Test text für |'Text1'|.Ich teste ja so gerne mit |'Text2'|.";      


              
        preg_match_all("%\|(.*?)\|%"$Text$Match);

              
        $i 0;

              foreach (
        $Match[0] as $value => $Key)
              {
                 
        $Text str_replace($KeyRegistry::get($Match[1][$i]), $Text);

                 echo 
        '<br />';
                 echo 
        Registry::get('Text1'); // Geht
                 
        echo '<br />';

                 echo 
        '<br />';
                 echo 
        Registry::get('Text2'); // Geht
                 
        echo '<br />';

                 echo 
        '<br />';
                 print(
        $Match[1][$i]); // ergibt 'Text1' und 'Text2'
                 
        echo '<br />';

                 echo 
        '<br />';
                 print(
        Registry::get($Match[1][$i])); // Geht nicht
                 
        echo '<br />';

                 
        $i++;
              } 
        Wie ich im Code geschrieben habe kann ich den Text aus der Registry auslesen, wenn ich ihn direkt aufrufe.
        Lasse ich den Key aber bauen bekomme ich nichts in der Ausgabe nicht mal einen Fehler.
        Wenn ich aber gerade nicht total im Eimer bin von gestern Abend/heute Morgen stimmt der Key den ich gebaut bekomme.
        Und nun wieder die Frage hast du oder ein anderer eine Idee wo ich gerade Tomaten auf den Augen habe oder einfach zu Doof bin?

        Gruß
        René

        Kommentar


        • #5
          Wenn du keine Fehlerausgabe hast trotz eingeschultem Error-Reporting musst du halt Fehleranalyse betreiben.
          Variableninhalte sollten bei der Fehlersuche nicht mit echo ausgegeben werden.

          Die Klasse Registry kennen wir auch nicht.

          Kommentar


          • #6
            Zitat von Renede Beitrag anzeigen
            PHP-Code:
            Registry::set('Text1''den Test');
            Registry::set('Text2''PHP');

            ...
            print(
            $Match[1][$i]); // ergibt 'Text1' und 'Text2' 
            Die Matches sind mit Hochkomma, aber in deiner Registry ohne Hochkomma....
            sorry, shift-taste kaputt

            Kommentar


            • #7
              Die Hochkommas brauche ich da der wert ja keine Konstante ist.

              Und mit dem Echo habt ihr Recht ich nutze sonnst auch:
              PHP-Code:
              #echo '<pre>';        
              #print_r();
              #echo '</pre>'; 
              habe es aber zum hier Posten vereinfacht.


              Und die Registry:

              PHP-Code:
              <?php

              abstract class Registry
              {

                 
              // Eigenschaft zum Speichern der Instanz der Klasse
                 
              protected static $instance null;

                 
              // Eigenschaft $registry setzten
                 
              private static $registry = array();

                 
              // verhindert das diese Klasse geclont wird
                 
              private function __clone(){}

                 
              // verhindert das diese Klasse eingebunden wird
                 
              private function __construct(){}

                 
              // Gibt eine Instanz zur�ck und sorgt dafür, dass es nur eine gibt.
                 
              public static function getInstance() {

                    if( 
              self::$instance === null ) {

                       
              self::$instance = new Registry();
                    }

                    return 
              self::$instance;
                 }

              /***************************** Start der Methoden *****************************/

                 // Methode zum prüfen ob es einen Key schon gibt
                 
              public static function has$key )
                 {
                    
              // Wenn es den Key schon gibt
                    
              if ( isset( self::$registry[$key] ) )
                    {
                       return 
              true;
                    
              // Wenn es den Key noch nicht gibt   
                    
              } else {
                       return 
              false;
                    }
                 }

                 
              // Methode zum anlegen von Objekten
                 
              public static function set$key$value )
                 {
                    
              // Setzten von Key und Value
                    
              self::$registry[$key] = $value;
                    return 
              true;
                 }

                 
              // Methode um einen Key aus der Registry zu holen
                 
              public static function get$key )
                 {
                    
              // wenn es den Key gibt
                    
              if ( self::has$key ) )
                    {
                    
              // den Key ausgeben
                    
              return self::$registry[$key];
                     }
                  }

                 
              // Methode um alle Keys aus der Registry zu holen
                 
              public static function getAll()
                 {
                    return 
              self::$registry;
                 }

                 
              // Methode um einen Key aus der Registry zu löschen
                 
              public static function remove($key)
                 {
                    
              // Wenn es den Key gibt
                    
              if ( self::has$key ) )
                    {

                       unset( 
              self::$registry[$key] );
                       return 
              true;

                    } else {

                       try
                       {
                          
              //Fehler ausgeben
                          
              throw new MyException"Diesen Key " $key " gibt nicht. </br>");

                       
              // Fehler fangen
                       
              } catch ( MyException $e ) {

                          
              // Fehler an eigene Fehlerbehandlung geben
                          
              $e->key_nicht_vorhanden();

                       }
                    }
                 }


                 
              // Methode um alle Keys aus der Registry zu löschen
                 
              public static function removeAll()
                 {

                    
              self::$registry = array();
                    return;

                 }

              }

              /* How to use:
              Registry::set('test', 'Ich bin ueberall verfuegbar.</br>');
              echo Registry::get('test');
              */
              ?>

              Kommentar


              • #8
                Nochmal anders formuliert:

                Du vergleichst 'Text1' (Match) mit Text1 (Registry)
                Das kann nicht funktionieren...

                Entweder du speicherst es in der Registry auch mit Hochkomma oder du filterst im RegEx die Hochkommas mit raus.
                sorry, shift-taste kaputt

                Kommentar


                • #9
                  Hallo Meister1900,

                  ja jetzt verstehe ich und natürlich hast du Recht.

                  Wenn ich sie direkt Abfrage brauche ich ja die Hochkommas aber da ich ja eigentlich es mit einer Variablen machen will können die raus.

                  Ich habe es gerade getestet und es geht.

                  Bin ich froh das ich das nur als Hobby ohne echtes Projekt oder Ziel mache sondern nur aus Spaß weil ich was Lernen will.
                  Beruflich würde ich mit Programmieren Baden gehen

                  Vielen Dank für die Hilfe und erklärung.

                  Gruß
                  René

                  Kommentar

                  Lädt...
                  X