2011-12-28 21 views
6

Muszę sprawdzić w moim skrypcie dla klienta użytkownika dla urządzeń mobilnych.Agent użytkownika mobilnego regexp

mam

if(preg_match('/lg|iphone|blackberry|opera/i', $_SERVER['HTTP_USER_AGENT'])) { ... } 

okazało się jednym lg musi być pierwszą częścią łańcucha

np

lg-9000 ... 
lg1000 ... 
lg 2000 ... 
lge4300 ... 

prostu chcę wiedzieć, czy jest to możliwe znajdź, czy ciąg znaków (z mojego regexp) można znaleźć w agencie użytkownika od początku, a nie gdzieś w ciągu znaków.

chciałbym, aby nie zmienić mój regex String

dzięki

Odpowiedz

11

Można użyć meta charakter ^ oznaczający początek łańcucha. Możesz przeczytać więcej na ten temat here. Poniższy wzór będzie tylko dopasować lg czy to w początku łańcucha:

^lg|iphone|blackberry|opera/ 

widać prosty przykład jak to działa tutaj: http://regexr.com?2vjec

+0

dzięki, działa idealnie – aki

-2

Używam tej biblioteki do wykrywania systemu operacyjnego i przeglądarki Informacje http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/

+8

nie działa, mam 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) LG, LG-E900 ' a nie mówi, że to telefon komórkowy ORAZ mówię, że mój os jest ** un wiedzieć**. również. mówi się, że ** iPhone 4 ** i mój klient użytkownika to 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 jak Mac OS X; en-us)' – aki