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.
Regulärer Ausdruck
- René
- Erledigt
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.
-
-
Echter PHP-Code, mit dem es probiert wurde und ein kompletter Suchstring, der nicht zur zufriedenheit zerlegt wird, wäre gut.
Ansonsten kann ich diese Seite empfehlen:
http://gskinner.com/RegExr/ -
[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 erkanntAnsonsten kannst du mit dem Link oben von mir ja auch mal noch selber rumprobieren.
Folgende Beispielstrings wurden bei mir richtig erkannt/nicht erkannt:ZitatMozilla/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! -
Dann nimm doch einfach den:
[PHP]<?php if(ereg("((Firefox/)(3.0.)(1 ))",$_SERVER['HTTP_USER_AGENT'])) print "3";//3.0.1 ?>[/PHP]