Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Warum passt dieser RegExp nicht?
Antwort
 
Themen-Optionen
Alt 10.05.2006, 20:40   Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard Warum passt dieser RegExp nicht?

Moin,

ich habe folgenden PerlRegExp:
Code:
/^Mozilla\/([0-9]\.[0-9]{1,3}) \( ?compatible\; (MSIE) ([0-9\.\-]+)\; ([a-zA-Z0-9\-\._ ]+)(\; [a-zA-Z0-9\-\._ ]+)*\)( ([a-zA-Z0-9\-_]+)\/([0-9\.\-]+))?$/
Nicht auf diesen String:
Code:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM)
Die Klammern haben folgende bedeutungen:
#1. Mozilla Version
#2. Browser
#3. Browser Version
#4. Platform
#5. Other Informations
#6. OPT
#7. Wrong Browser
#8. Wrong Browser Version

Nun rufe ich den Pattern so auf:
PHP-Code:
<?php
preg_match
(self::pATTERN_IE$this->user_agent$user_agent_data)
?>
Die Parameter sollten sich selbst erklären. Alle haben die richtigen werte aber ich erhalte nur ein leeres Array.

Vielen Dank, Prophet
__________________
Prophet ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 22:06   Nach oben    #2
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

ich würd den ersten fehler hier:
( ?compatible\; (MSIE)

vermuten

desweiteren: warum maskierst du das semikolon ? ( \; )

naja überleg dir dein regexp nochmal

mfg
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";');
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 22:19   Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard

Ich habe jetzt herausgefunden es lag daran das ich um fehler zu prüfen den rückgabewert mit !== false geprüft habe. Das Problem daran ist nur das die Funktion komischer weise (int)0 und nicht (bool)false zurückliefert. Jetzt Funktioniert wieder alles

Danke für deine Zeit!
__________________
Prophet ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 22:22   Nach oben    #4
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Die preg_match-Funktionen geben im Fehlerfall false und im Erfolgsfall die Zahl der Treffer (die auch 0 sein kann) zurück.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 22:50   Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 588
Standard

Hmm, der reguläre Ausdruck wird nicht immer passen.
Besonders das Ende ist sehr Variabel !

a-zA-Z kannst mit a-z schreiben, wenn du Modifer i benutzt.
0-9 kannste auch mit \d abkürzen.

Vielleicht mal etwas einfacher:
http://www.cix88.de/projekte/regexp/20060510225023.html
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 23:32   Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard



Danke für deine hilfe CIX88. Ich werde die patterns die ich verwende vll noch vereinfachen (i war bereits geplant). Aber wie ich den User Agent analysiere weiß ich und es hat seinen sinn das ich die angaben teilweise so stark präzisiere. Ich habe mir über 50 User Agents zusammengesammelt und bin dabei einen Analysator dafür zu schreiben. Ich werde ihn vll schon morgen hier mal reinstellen. Er ist soweit fertig und kann die gängigsten browser bereits problemlos verarbeiten. Was mir noch fehlt sind patterns für suchbots/spiders und nicht so gängige browser. Aber die sind bereits in arbeit.

@Lars: Achso, danke!

EDIT: Nettes formular zum testen von RegExp CIX88!
__________________

Geändert von Prophet (10.05.2006 um 23:36 Uhr).
Prophet ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2006, 08:19   Nach oben    #7
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.185
Standard

ich weis ja nicht was genau du willst, aber:

www.php.net/get_browser

zerlegt den string auch ganz gut

erfordert halt ein vernünftig installiertes php mit browscap.ini und dass die datei vieleicht ab und an aktualisiert wird.

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2006, 14:20   Nach oben    #8
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard

Kann auch sein das ich diese Funktion missverstanden habe aber alle was sie macht ist doch ihre in der browsercap.ini festgelegten werte auszugeben. Ausserdem zeigt meine parser auch informationen an die dort nicht enthalten sind. Mein parser ermittelt eigenschaften im user agent vorhanden sind.
__________________
Prophet ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte in einen Regexp einsetzen. ex³ PHP-Programmierung 6 02.02.2007 07:27
Was macht mein regexp? ex³ PHP-Programmierung 3 05.11.2006 11:52
regexp Datums-Vervollständigung ex³ PHP-Programmierung 10 12.02.2006 16:16
[PHP] Regexp und die Gierigkeit CIX88 Tutorials 0 29.01.2006 13:36
[MySQL] REGEXP Problem Jay Datenbanken 3 27.12.2005 13:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:42 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44