| 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: 14 let
|
|||
0