tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von einfach nur crack
  • 1 Beitrag von Sven Mintel
  • 1 Beitrag von einfach nur crack
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
264
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Hi

    ich habe mich in letzter Zeit öfters mit regulären Ausdrücken beschäftigt und schätze mich mittlerweile recht fit ein. Nur habe ich eine Frage zu einer bestimmten Syntax, die zumindest bei nicht zu funktionieren scheint:
    PHP-Code:
    $string  "101";
    $pattern "/(\d)\d\1/";
    preg_match_all($pattern,$string,$matches); 
    Meiner Meinung sollte es so ablaufen. Es wird eine Zahl (\d) gesucht. Anschließend muss eine weitere Zahl folgen(\d) und dann noch die Zahl, die ganz zu Anfang gefunden wurde (\1). Allerdings scheint das \1 nicht zu funktionieren, jedenfalls enthält "matches" keinen "match" :-/
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  2. #2
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Versuch es mal, nachdem du das Pattern in einfache Anführungszeichen gesetzt hast. Ich habe es gerade mit dem RegEx-Tester ausprobiert und es funktioniert ohne Probleme.

    Code-Beispiel:
    Code PHP:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    <?php 
    error_reporting(E_ALL); 
     
    // Text bzw. String der durchsucht werden soll  
    $string = <<<EOF 
    101 
    EOF; 
     
    // das Suchmuster mit Delimiter und Modifer (falls vorhanden)  
    $pattern = '/(\d)\d\1/'; 
     
    // RegEx mit preg_match_all() auswerten  
    preg_match_all($pattern, $string, $array); 
     
    // formatierte Ausgabe  
    echo '<pre>', print_r($array, true), '</pre>'; 
    ?>
    Nord-Süd-Richtung bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  3. #3
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Hi

    was ein Mist, mit einfachen Anführungszeichen funktionierts tatsächlich. Danke
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Folgende Varianten funktionieren:

    Code :
    1
    2
    
    $pattern = [B][SIZE="4"][COLOR="Red"]'[/COLOR][/SIZE][/B]/(\d)\d\1/ [B][SIZE="4"][COLOR="Red"]'[/COLOR][/SIZE][/B];
    $pattern = "/(\d)\d [B][SIZE="4"][COLOR="Red"]\\[/COLOR][/SIZE][/B]1/";

    Dein Versuch scheitert wie erwähnt an den doppelten Anführungzeichen, weil dort der String vorher durch PHP ausgwertet wird.
    Die Escape-Sequenz wird dir dort das ASCII-Zeichen mit dem Wert 1 liefern(irgendein Steuerzeichen).

    Kurzer Test:
    Code :
    1
    2
    3
    4
    
    $string  = "10".[B]chr(1)[/B];
    $pattern = "/(\d)\d\1/";
    preg_match_all($pattern,$string,$matches);  
    print_r($matches);
    Nord-Süd-Richtung bedankt sich. 

  5. #5
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Hey

    Danke dass du das nochmal getestest/gewusst hast Find ich persöhnlich noch besser, da ich für Strings lieber die doppelten Anführungszeichen nehme
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  6. #6
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Ich würde bei Zeichenketten, insofern es nicht unbedingt notwendig ist, immer einfache Anführungszeichen nutzen, denn in diesen wird der Inhalt nicht interpretiert, was im Endeffekt auch noch die Auslastung senkt. Zwar nur gering, aber immerhin.
    Sven Mintel bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

Ähnliche Themen

  1. Explode mit regulären Ausdrücken
    Von bauchinj im Forum PHP
    Antworten: 1
    Letzter Beitrag: 07.10.10, 14:28
  2. URL-Überprüfung mit regulären Ausdrücken
    Von Online-Skater im Forum PHP
    Antworten: 16
    Letzter Beitrag: 11.03.10, 10:38
  3. Suche mit Regulären ausdrücken
    Von liquidbeats im Forum PHP
    Antworten: 6
    Letzter Beitrag: 03.07.06, 23:30
  4. Problem mit Regulären Ausdrücken
    Von forsterm im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 26.02.06, 00:59
  5. Variablen in Regulären Ausdrücken
    Von MRanderath im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 23.08.01, 18:19