Hej!
Chcę pobrać z adresu URL 3 dane: domena, domena najwyższego poziomu i dane po domenie najwyżeszego poziomu (nazwa pliku np.). Mam narazie tyle:
$sUrl="http://google.pl/webhp?hl=pl";
$pPattern = '#http://(.*?)\.(.*?)/(.*?)#si';
preg_match($pPattern,$sUrl,$aData);
print_r $aData;
I to zwraca mi domene i domene najwyższego poziomu. A jak pobrać to po domenie?
Proszę o pomoc i pozdrawiam
Do wyciągnięcia tego co jest po znaku ‘?’ możesz użyć czegoś takiego:
$sUrl="http://google.pl/webhp?hl=pl&num=30";
$b=explode('?', $sUrl);
print_r($b); // Array ( [0] => http://google.pl/webhp [1] => hl=pl&num=30 )
parse_str($b[1], $output);
print_r($output); // Array ( [hl] => pl [num] => 30 )
A co do całości to:
$sUrl="http://google.pl/webhp?hl=pl&num=30";
$pPattern = '/http:\/\/(.*)\.(.*)\/(.*)\?(.*)/si';
preg_match_all($pPattern,$sUrl,$aData,PREG_SET_ORDER);
print_r ($aData);
// Array ( [0] => Array ( [0] => http://google.pl/webhp?hl=pl&num=30 [1] => google [2] => pl [3] => webhp [4] => hl=pl&num=30 ) )
Ok dzięki, działa :]
– Dodane 11.07.2009 (So) 19:54 –
Kurcze, jednak nie wszystko działa
Powiedzmy że mam taki adres:
$sUrl=“http://google.pl/buu/aaa”;
Skrypt mi zwróci w $aData[2]:
pl/buu/
a chcę żeby mi ucieło do pierwszego /
Pozdrawiam i proszę o pomoc
Jedyne co udało mi się wykombinować to
$sUrl="http://google.com.pl/buu/aaa?abc=33&ffs=44";
$pPattern = '/(http:\/\/)([a-z0-9-_.]*)\/([a-z0-9,-_\/]*)\?(.*)/si';
i wychodzi
Array ( [0] => Array ( [0] => http://google.com.pl/buu/aaa?abc=33&ffs=44 [1] => http:// [2] => google.com.pl [3] => buu/aaa [4] => abc=33&ffs=44 ) )
póżniej np
$arr = array_merge(explode('.', $aData[0][2]),explode('/', $aData[0][3]) );
a dla końcówki parse_str.
Jeśli Ci się uda z samym wyr.reg daj znać.
Airborn
(Airborn)
#5