Код (PHP): $string_p=searchstr($string,$separator); // парсим поисковый запрос $array=explode($separator, $string_p); //отделяем домен от запроса $domain=$array[0]; $text=$array[1]; if(!isset($text)){ //если запрос пустой - отделяем домен от хлама $array=explode("/url?",$domain); $domain=$array[0]; } пытаюсь написать вменяемый парсер для $_SERVER['HTTP_REFERER'] с гугля получаю такие ссылки: httр://www.google.ru/#hl=ru&output=search&q=поисковый запрос - если ссылка содержит поисковый запрос httр://www.google.ru/url?=куча говна - если ссылка не содержит поисковый запрос так вот, моя функция "searchstr" парсит только те ссылки, которые содержат поисковый запрос. Те, что поисковый запрос не содержат - я просто отделяю домен от кучи говна и записываю в базу данных только домен. И все бы нормально, только сегодня обнаружил, что в базу данных куча говна таки попадает, потому что есть еще третий тип ссылок: httр://www.google.ru/imgres?imgurl=куча говна - если переход с гугль-картинок Так вот, как мне это говно отделить с помощью explode? Что-то типа explode("/url?" OR "/imgres?",$domain); Добавлено спустя 6 минут 5 секунд: попробую сделать так: Код (PHP): $array=explode("/url?",$domain); $domain=$array[0]; $array=explode("/imgres?",$domain); // если говно не отделилось $domain=$array[0];
Код (Text): $string="http://www.google.ru/imgres?imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgrefurl=http://домен/kyev/&usg=__MYJIzUScF0zXEI_HAQooRuDkQjU=&h=362&w=483&sz=14&hl=uk&start=201&zoom=1&tbnid=UW-BB2vejJk2LM:&tbnh=145&tbnw=193&ei=hxqVT72ULMvDswaWlvzBAg&prev=/search?q=тута запрос&hl=uk&newwindow=1&sa=X&imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/&imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg&w=1801&h=1012&sig=109725256704985722101&ndsp=15&biw=1037&bih=500&tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw&tbm=isch&itbs=1&iact=hc&vpx=124&vpy=174&dur=5388&hovh=194&hovw=259&tx=116&ty=178&sig=109725256704985722101&page=15&ved=1t:429,r:9,s:201,i:556"; $url=parse_url($string); echo "<pre>"; print_r($url); echo "</pre>"; Код (Text): Array ( [0] => http://www.google.ru/imgres?img [1] => =http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgref [2] => = )
у меня так: Код (Text): Array ( [scheme] => http [host] => www.google.ru [path] => /imgres [query] => imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgrefurl=http://домен/kyev/&usg=__MYJIzUScF0zXEI_HAQooRuDkQjU=&h=362&w=483&sz=14&hl=uk&start=201&zoom=1&tbnid=UW-BB2vejJk2LM:&tbnh=145&tbnw=193&ei=hxqVT72ULMvDswaWlvzBAg&prev=/search?q=тута запрос&hl=uk&newwindow=1&sa=X&imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/&imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg&w=1801&h=1012&sig=109725256704985722101&ndsp=15&biw=1037&bih=500&tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw&tbm=isch&itbs=1&iact=hc&vpx=124&vpy=174&dur=5388&hovh=194&hovw=259&tx=116&ty=178&sig=109725256704985722101&page=15&ved=1t:429,r:9,s:201,i:556 ) Добавлено спустя 5 минут 40 секунд: Код (PHP): $string = "http://www.google.ru/imgres?imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgrefurl=http://домен/kyev/&usg=__MYJIzUScF0zXEI_HAQooRuDkQjU=&h=362&w=483&sz=14&hl=uk&start=201&zoom=1&tbnid=UW-BB2vejJk2LM:&tbnh=145&tbnw=193&ei=hxqVT72ULMvDswaWlvzBAg&prev=/search?q=тута запрос&hl=uk&newwindow=1&sa=X&imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/&imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg&w=1801&h=1012&sig=109725256704985722101&ndsp=15&biw=1037&bih=500&tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw&tbm=isch&itbs=1&iact=hc&vpx=124&vpy=174&dur=5388&hovh=194&hovw=259&tx=116&ty=178&sig=109725256704985722101&page=15&ved=1t:429,r:9,s:201,i:556"; $url = parse_url($string); $url['query'] = explode('&', $url['query']); $queries = array(); foreach ($url['query'] as $query) { $tmp = explode('=', $query); $queries[$tmp[0]]= (isset($tmp[1]) ? $tmp[1] : $tmp[0]);//эта хитрая строка для параметров без значения. } echo "<pre>"; print_r($url); print_r($queries); echo "</pre>"; выдаст Код (Text): Array ( [scheme] => http [host] => www.google.ru [path] => /imgres [query] => Array ( [0] => imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg [1] => imgrefurl=http://домен/kyev/ [2] => usg=__MYJIzUScF0zXEI_HAQooRuDkQjU= [3] => h=362 [4] => w=483 [5] => sz=14 [6] => hl=uk [7] => start=201 [8] => zoom=1 [9] => tbnid=UW-BB2vejJk2LM: [10] => tbnh=145 [11] => tbnw=193 [12] => ei=hxqVT72ULMvDswaWlvzBAg [13] => prev=/search?q=тута запрос [14] => hl=uk [15] => newwindow=1 [16] => sa=X [17] => imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/ [18] => imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg [19] => w=1801 [20] => h=1012 [21] => sig=109725256704985722101 [22] => ndsp=15 [23] => biw=1037 [24] => bih=500 [25] => tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw [26] => tbm=isch [27] => itbs=1 [28] => iact=hc [29] => vpx=124 [30] => vpy=174 [31] => dur=5388 [32] => hovh=194 [33] => hovw=259 [34] => tx=116 [35] => ty=178 [36] => sig=109725256704985722101 [37] => page=15 [38] => ved=1t:429,r:9,s:201,i:556 ) ) Array ( [imgurl] => http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg [imgrefurl] => http://www.еще один домен.ru/portfolio/image/tiger22/ [usg] => __MYJIzUScF0zXEI_HAQooRuDkQjU [h] => 1012 [w] => 1801 [sz] => 14 [hl] => uk [start] => 201 [zoom] => 1 [tbnid] => UW-BB2vejJk2LM: [tbnh] => 145 [tbnw] => 193 [ei] => hxqVT72ULMvDswaWlvzBAg [prev] => /search?q [newwindow] => 1 [sa] => X [sig] => 109725256704985722101 [ndsp] => 15 [biw] => 1037 [bih] => 500 [tbs] => simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw [tbm] => isch [itbs] => 1 [iact] => hc [vpx] => 124 [vpy] => 174 [dur] => 5388 [hovh] => 194 [hovw] => 259 [tx] => 116 [ty] => 178 [page] => 15 [ved] => 1t:429,r:9,s:201,i:556 )
Другими словами, из одной кучи говна получили другую кучу говна, причем вторая куча уже без поискового запроса, который надо было извлечь.
ты все просмотрел, что я написал? ты видишь, что там два вардампа? ты видел второй? я тебе еще раз запосчу. ты ж сам ленивый, чтобы ползунки крутить. бросил взгляд и хватит =) Код (Text): Array ( [imgurl] => http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg [imgrefurl] => http://www.еще один домен.ru/portfolio/image/tiger22/ [usg] => __MYJIzUScF0zXEI_HAQooRuDkQjU [h] => 1012 [w] => 1801 [sz] => 14 [hl] => uk [start] => 201 [zoom] => 1 [tbnid] => UW-BB2vejJk2LM: [tbnh] => 145 [tbnw] => 193 [ei] => hxqVT72ULMvDswaWlvzBAg [prev] => /search?q [newwindow] => 1 [sa] => X [sig] => 109725256704985722101 [ndsp] => 15 [biw] => 1037 [bih] => 500 [tbs] => simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw [tbm] => isch [itbs] => 1 [iact] => hc [vpx] => 124 [vpy] => 174 [dur] => 5388 [hovh] => 194 [hovw] => 259 [tx] => 116 [ty] => 178 [page] => 15 [ved] => 1t:429,r:9,s:201,i:556 )
Код (Text): /search?q=тута запрос Код (Text): [prev] => /search?q я три раза прокрутил сверху-вниз и обратно, и в упор не вижу там "тута запрос"
я тя понял Добавлено спустя 1 минуту 32 секунды: ща... скайп ломится... Добавлено спустя 1 минуту 17 секунд: замени строку на $tmp = explode('=', $query, 2);
неправильный я код написал. о функции не знал или забыл. вот код верный. Код (PHP): $string = "http://www.google.ru/imgres?imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgrefurl=http://домен/kyev/&usg=__MYJIzUScF0zXEI_HAQooRuDkQjU=&h=362&w=483&sz=14&hl=uk&start=201&zoom=1&tbnid=UW-BB2vejJk2LM:&tbnh=145&tbnw=193&ei=hxqVT72ULMvDswaWlvzBAg&prev=/search?q=тута запрос&hl=uk&newwindow=1&sa=X&imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/&imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg&w=1801&h=1012&sig=109725256704985722101&ndsp=15&biw=1037&bih=500&tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw&tbm=isch&itbs=1&iact=hc&vpx=124&vpy=174&dur=5388&hovh=194&hovw=259&tx=116&ty=178&sig=109725256704985722101&page=15&ved=1t:429,r:9,s:201,i:556"; $url = parse_url($string); parse_str($url['query'],$queries); echo "<pre>"; print_r($url); print_r($queries); echo "</pre>";