Autor | Zpráva | ||
---|---|---|---|
Velda Profil |
Zdravím,
mám tento kód: <?php $ua = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450 Safari/534.7'; preg_match('/ \(KHTML, like Gecko\)( (\w+)\/(\d{1,2}(?:\.\d{1,4}){1,3}\w*)){1,2}/', $ua, $matches); var_dump($matches); //array(4) { [0]=> string(56) " (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450" [1]=> string(19) " Chrome/7.0.517.450" [2]=> string(6) "Chrome" [3]=> string(11) "7.0.517.450" } ?> Trochu jsem výraz zjednoduššil aby nebyl tolik složitý, ale stále je to to samé... <?php $ua = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450 Safari/534.7'; preg_match('/ \(KHTML, like Gecko\)( (\w+)\/([^ ]+)){1,2}/', $ua, $matches); var_dump($matches); //array(4) { [0]=> array(1) { [0]=> string(56) " (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450" } [1]=> array(1) { [0]=> string(19) " Chrome/7.0.517.450" } [2]=> array(1) { [0]=> string(6) "Chrome" } [3]=> array(1) { [0]=> string(11) "7.0.517.450" } } ?> |
||
Majkl578 Profil |
preg_match ti nevrátí variabilní počet matchů. Mělo by stačit zduplikovat tu část patternu na zachycení formátu Foo/1.2.3. Samotný regulár by nejspíš šel napsat i konkrétněji (zhruba jako ta první verze, která je lepší, ale tobě se z nějakého neznámého důvodu nelíbí), dle potřeb použítí.
(A abych pravdu řekl, nikdy jsem nepochopil, proč lidi jako delimiter volí znak, který pak používají a musí jej escapovat namísto takového, který používat nebudou.) Takže: $ua = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450 Safari/534.7'; preg_match('~ \(KHTML, like Gecko\)( (\w+)/([^ ]+))( (\w+)/([^ ]+))~', $ua, $matches); var_dump($matches); array(7) { [0] => string(56) " (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450" [1] => string(17) " Flock/3.5.3.4628" [2] => string(5) "Flock" [3] => string(10) "3.5.3.4628" [4] => string(19) " Chrome/7.0.517.450" [5] => string(6) "Chrome" [6] => string(11) "7.0.517.450" } |
||
VVelda Profil * |
#3 · Zasláno: 21. 5. 2012, 08:13:01
Tak jo, udělám to takhle. Díky moc. A taky díky za tu ~ – je to pro mě novinka. :-)
|
||
Časová prodleva: 12 let
|
0