tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
322
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hoctar hoctar ist offline Mitglied Brokat
    Registriert seit
    Jun 2007
    Beiträge
    344
    Hallo
    ich muss aus einem Text eine id auslesen, die minimal 4 und maximal 6 Stellen haben darf numerisch.
    z.B.
    PHP-Code:
    $daten "Text text text blub blub 12587 blub 2782 sdfsdf 27811614146 ad sdf 78"
    Das Ergebnis aus diesem Sring soll:

    12587
    2782

    sein, denn nur diese Zahlen sind ids.

    Ich habe bereits versucht:
    PHP-Code:
    preg_match_all("/[0-9]{4,6}/"$daten$var); 
    aber leider wird "27811614146" auch als id erkannt, nur nach 6 Zeichen abgeschnitten.
    Wie kann ich nur Zahlen rausfiltern die min. 4 und max. 6 Stellen haben ?
     

  2. #2
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    431
    Also, so einfach ist das nicht außer ich kenne eine Funktion gerade nicht, ich würde die Stringlänge ermitteln und dann nach " " Leerzeichen suchen, und damit trennen, dann sind alle Wörter allein in einer FOR-Schleife würde ich die länge jedes Wort prüfen und ob es numeric ist!

    Oder nimmst deine Funktion und lässt alle von 4 bis 7 Zeichen ermitteln, danach prüfst du deine gefundenen Zeichenketten auf die länge, alle die länger als 6 sind fliegen raus
    Nicht gerade schön, aber klappt
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

  3. #3
    Avatar von LSd
    LSd LSd ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    112
    Hallo,
    schau dir mal unter http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck den Abschnitt "Quantoren" an.

    Viel. hilft dir das weiter.

    Grüße
     
    > "Open your mind"
    > "Open your heart"
    > "Open your source"

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Code :
    1
    
    #\s([0-9]{4,6})\s#

    Spontan würde ich das so lösen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Verwende Wortgrenzen \b:
    Code :
    1
    
    /\b\d{4,6}\b/
     
    Markus Wulftange

  6. #6
    hoctar hoctar ist offline Mitglied Brokat
    Registriert seit
    Jun 2007
    Beiträge
    344
    Okay, vielen danke euch
    Aber müsste das nicht so auch gehen ? /^[0-9]{4,6}$/
     

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Nein. Dieser Ausdruck trifft nur auf Zeichenfolgen zu, die exakt aus vier bis sechs Ziffern bestehen.
     
    Markus Wulftange

  8. #8
    hoctar hoctar ist offline Mitglied Brokat
    Registriert seit
    Jun 2007
    Beiträge
    344
    Wenn nun ein Datum kommt 10.04.2009 dann wird 2009 als ID erkannt. Wie könnte man das verhindern ?
     

  9. #9
    Avatar von maeTimmae
    maeTimmae maeTimmae ist offline Mitglied Platin
    Registriert seit
    Aug 2007
    Ort
    Erfurt, Saarbrücken, Leipzig und Fulda
    Beiträge
    515
    Mittels look-ahead und look-behind Assertions kann nachvollzogen werden, ob vor und nach dem Treffer die entsprechenden Bedingungen zutreffen. Diese sind in deinem Fall Whitespaces und / oder Beginn und / oder Ende des String:
    Code :
    1
    
    %(?=^|\s)[0-9]{4,6}(?=\s|$)%
     
    Zitat Zitat von Steve Wozniak
    Never trust a computer you can't throw out a window.

  10. #10
    hoctar hoctar ist offline Mitglied Brokat
    Registriert seit
    Jun 2007
    Beiträge
    344
    Aber das Datum hat ja nur Punkte und keine Leerzeichen 10.04.2009
    Warum funktioniert Gumbos methode nicht
    Code :
    1
    
    /\b\d{4,6}\b/
     

  11. #11
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    ich spendiere noch ein "<"
    Zitat Zitat von maeTimmae Beitrag anzeigen
    Code :
    1
    
    %(?[COLOR="Red"]<[/COLOR]=^|\s)[0-9]{4,6}(?=\s|$)%


    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  12. #12
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    Zitat Zitat von hoctar Beitrag anzeigen
    Aber das Datum hat ja nur Punkte und keine Leerzeichen 10.04.2009
    Warum funktioniert Gumbos methode nicht
    Code :
    1
    
    /\b\d{4,6}\b/
    Ein Punkt ist kein "word character".

    Aus dem PHP-Manual:
    A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word".
    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

Ähnliche Themen

  1. [C++] Int und Double erkennen
    Von Avedo im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 17.01.11, 18:57
  2. Herkunftsland erkennen
    Von Spranta im Forum PHP
    Antworten: 4
    Letzter Beitrag: 26.04.06, 14:08
  3. €-zeichen mit vi und sed erkennen - wie?
    Von starter_de im Forum Linux & Unix
    Antworten: 6
    Letzter Beitrag: 17.05.04, 00:36
  4. Bannerklick erkennen
    Von Hawkster im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.05.04, 20:32
  5. Hardware erkennen
    Von DanielBodensee im Forum Delphi, Kylix, Pascal
    Antworten: 0
    Letzter Beitrag: 09.04.04, 19:36