Regulärer Ausdruck

Read-Only-Modus

Das 01-Supportforum befindet sich im Read-Only-Modus. Es ist nicht mehr möglich sich zu registrieren, neue Themen zu erstellen oder auf bestehende Themen zu antworten.

Alle Inhalte stehen bis auf absehbare Zeit jedoch weiterhin lesend zur Verfügung.


Bei Fehlern oder Problemen mit PHP-Scripten von 01-Scripts.de erstellen Sie gerne einen Issue-Eintrag auf Github oder nehmen Sie per E-Mail Kontakt auf.

  • Hallo,
    ich suche nach einen Regulärer Ausdruck der einen String durchsucht und nur auf diesen reagiert. Das Problem sind z.B. Versionangaben z.B 1.0.1 und 1.0.10. Wenn ich diese beiden Suche bekomme ich immer alle beide angezeigt, es soll aber jede für sich angezeigt werden.
    Versucht habe ich es mit
    ereg 1.0.1
    und mit Zeichenzählen [1.0.1]{5} bzw.[1.0.10]{6}
    Es werden immer wieder alle zwei angezeigt, was muss man da benutzen?
    Ich blättere jetzt schon mehrere Tage in meinen Büchern finde aber nicht´s für solch einen Fall.

  • [PHP]if(ereg("((Firefox/)(3.0.)(10){1})",$_SERVER['HTTP_USER_AGENT'])) print "10";[/PHP]
    [PHP]if(ereg("((Firefox/)(3.0.)(1))",$_SERVER['HTTP_USER_AGENT'])) print "3.0.1";[/PHP]
    [PHP]if(stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox/3.0.10')) print "10";[/PHP]
    [PHP]if(stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox/3.0')) print "3.0";[/PHP]


    Das Problem bei der 10er Version wird auch die 3.0 und die 3.0.1 angezeigt. Bis zur 09 war das kein Problem, aber jetzt bei der 10er und nächsten Monat bei der 11er wird das auch noch kommen. Ich könnte zwar die Geckoversionen nehmen, aber da weis ich sie nicht von der 3.0 und 3.0.0. und es müssten die Finalversionen sein.

  • Also die erste Abfrage
    [PHP]<?php if(ereg("((Firefox/)(3.0.)(10){1})",$_SERVER['HTTP_USER_AGENT'])) print "10"; ?>[/PHP]
    funktioniert bei mir wunderbar:
    Firefox/3.0.1 - wird nicht erkannt
    Firefox/3.0.0 - wird nicht erkannt
    Firefox/3.0 - wird nicht erkannt
    Firefox/3.0.11 - wird nicht erkannt

    Firefox/3.0.10 - wird erkannt


    ?(


    Ansonsten kannst du mit dem Link oben von mir ja auch mal noch selber rumprobieren.
    Folgende Beispielstrings wurden bei mir richtig erkannt/nicht erkannt:

    Zitat

    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.1 (.NET CLR 3.5.30729)
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0 (.NET CLR 3.5.30729)
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.0 (.NET CLR 3.5.30729)
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.11 (.NET CLR 3.5.30729)

  • [PHP]if(ereg("((Firefox/)(3.0.)(1))",$_SERVER['HTTP_USER_AGENT'])) print "3";//3.0.1[/PHP]
    Dieser Code wird aber auch bei der 10. Version angezeigt, soll aber nur bei der 3.0.1 angezeigt werden.
    Naja, vielleicht komm ich noch drauf!