За последние 24 часа нас посетил 20071 программист и 1724 робота. Сейчас ищут 1619 программистов ...

Как в эксплод закинуть два параметра?

Тема в разделе "Вопросы от блондинок", создана пользователем html-программист, 23 апр 2012.

  1. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Код (PHP):
    1.     $string_p=searchstr($string,$separator); // парсим поисковый запрос
    2.     $array=explode($separator, $string_p); //отделяем домен от запроса
    3.     $domain=$array[0];
    4.     $text=$array[1];
    5.     if(!isset($text)){ //если запрос пустой - отделяем домен от хлама
    6.         $array=explode("/url?",$domain);
    7.         $domain=$array[0];
    8.     } 
    пытаюсь написать вменяемый парсер для $_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):
    1.         $array=explode("/url?",$domain);
    2.         $domain=$array[0];
    3.         $array=explode("/imgres?",$domain); // если говно не отделилось
    4.         $domain=$array[0];
    5.  
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    parse_url(), потом эксплодом по амперсанду тот кусок который в query кажется.
     
  3. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Код (Text):
    1.     $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";
    2.    
    3.     $url=parse_url($string);
    4.     echo "<pre>";
    5.     print_r($url);
    6.     echo "</pre>";
    Код (Text):
    1. Array
    2. (
    3.     [0] => http://www.google.ru/imgres?img
    4.     [1] => =http://домен/wp-content/uploads/2011/11/pikcha.jpg&imgref
    5.     [2] => =
    6. )
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у меня так:
    Код (Text):
    1. Array
    2. (
    3.     [scheme] => http
    4.     [host] => www.google.ru
    5.     [path] => /imgres
    6.     [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
    7. )
    Добавлено спустя 5 минут 40 секунд:
    Код (PHP):
    1. $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";
    2.  
    3. $url = parse_url($string);
    4.  
    5. $url['query'] = explode('&', $url['query']);
    6. $queries = array();
    7. foreach ($url['query'] as  $query) {
    8.   $tmp = explode('=', $query);
    9.   $queries[$tmp[0]]= (isset($tmp[1]) ? $tmp[1] : $tmp[0]);//эта хитрая строка для параметров без значения.
    10. }
    11.  
    12. echo "<pre>";
    13. print_r($url);
    14. print_r($queries);
    15. echo "</pre>"; 
    выдаст

    Код (Text):
    1. Array
    2. (
    3.     [scheme] => http
    4.     [host] => www.google.ru
    5.     [path] => /imgres
    6.     [query] => Array
    7.         (
    8.             [0] => imgurl=http://домен/wp-content/uploads/2011/11/pikcha.jpg
    9.             [1] => imgrefurl=http://домен/kyev/
    10.             [2] => usg=__MYJIzUScF0zXEI_HAQooRuDkQjU=
    11.             [3] => h=362
    12.             [4] => w=483
    13.             [5] => sz=14
    14.             [6] => hl=uk
    15.             [7] => start=201
    16.             [8] => zoom=1
    17.             [9] => tbnid=UW-BB2vejJk2LM:
    18.             [10] => tbnh=145
    19.             [11] => tbnw=193
    20.             [12] => ei=hxqVT72ULMvDswaWlvzBAg
    21.             [13] => prev=/search?q=тута запрос
    22.             [14] => hl=uk
    23.             [15] => newwindow=1
    24.             [16] => sa=X
    25.             [17] => imgrefurl=http://www.еще один домен.ru/portfolio/image/tiger22/
    26.             [18] => imgurl=http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg
    27.             [19] => w=1801
    28.             [20] => h=1012
    29.             [21] => sig=109725256704985722101
    30.             [22] => ndsp=15
    31.             [23] => biw=1037
    32.             [24] => bih=500
    33.             [25] => tbs=simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw
    34.             [26] => tbm=isch
    35.             [27] => itbs=1
    36.             [28] => iact=hc
    37.             [29] => vpx=124
    38.             [30] => vpy=174
    39.             [31] => dur=5388
    40.             [32] => hovh=194
    41.             [33] => hovw=259
    42.             [34] => tx=116
    43.             [35] => ty=178
    44.             [36] => sig=109725256704985722101
    45.             [37] => page=15
    46.             [38] => ved=1t:429,r:9,s:201,i:556
    47.         )
    48.  
    49. )
    50. Array
    51. (
    52.     [imgurl] => http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg
    53.     [imgrefurl] => http://www.еще один домен.ru/portfolio/image/tiger22/
    54.     [usg] => __MYJIzUScF0zXEI_HAQooRuDkQjU
    55.     [h] => 1012
    56.     [w] => 1801
    57.     [sz] => 14
    58.     [hl] => uk
    59.     [start] => 201
    60.     [zoom] => 1
    61.     [tbnid] => UW-BB2vejJk2LM:
    62.     [tbnh] => 145
    63.     [tbnw] => 193
    64.     [ei] => hxqVT72ULMvDswaWlvzBAg
    65.     [prev] => /search?q
    66.     [newwindow] => 1
    67.     [sa] => X
    68.     [sig] => 109725256704985722101
    69.     [ndsp] => 15
    70.     [biw] => 1037
    71.     [bih] => 500
    72.     [tbs] => simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw
    73.     [tbm] => isch
    74.     [itbs] => 1
    75.     [iact] => hc
    76.     [vpx] => 124
    77.     [vpy] => 174
    78.     [dur] => 5388
    79.     [hovh] => 194
    80.     [hovw] => 259
    81.     [tx] => 116
    82.     [ty] => 178
    83.     [page] => 15
    84.     [ved] => 1t:429,r:9,s:201,i:556
    85. )
     
  5. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Другими словами, из одной кучи говна получили другую кучу говна, причем вторая куча уже без поискового запроса, который надо было извлечь. :)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты все просмотрел, что я написал? ты видишь, что там два вардампа? ты видел второй?
    я тебе еще раз запосчу. ты ж сам ленивый, чтобы ползунки крутить. бросил взгляд и хватит =)

    Код (Text):
    1. Array
    2. (
    3.     [imgurl] => http://www.еще один домен.ru/ufiles/image/tiger22-adv-4.jpg
    4.     [imgrefurl] => http://www.еще один домен.ru/portfolio/image/tiger22/
    5.     [usg] => __MYJIzUScF0zXEI_HAQooRuDkQjU
    6.     [h] => 1012
    7.     [w] => 1801
    8.     [sz] => 14
    9.     [hl] => uk
    10.     [start] => 201
    11.     [zoom] => 1
    12.     [tbnid] => UW-BB2vejJk2LM:
    13.     [tbnh] => 145
    14.     [tbnw] => 193
    15.     [ei] => hxqVT72ULMvDswaWlvzBAg
    16.     [prev] => /search?q
    17.     [newwindow] => 1
    18.     [sa] => X
    19.     [sig] => 109725256704985722101
    20.     [ndsp] => 15
    21.     [biw] => 1037
    22.     [bih] => 500
    23.     [tbs] => simg:CAESEgkQhWXRKlgSlSFnuRCS_1VRRzw
    24.     [tbm] => isch
    25.     [itbs] => 1
    26.     [iact] => hc
    27.     [vpx] => 124
    28.     [vpy] => 174
    29.     [dur] => 5388
    30.     [hovh] => 194
    31.     [hovw] => 259
    32.     [tx] => 116
    33.     [ty] => 178
    34.     [page] => 15
    35.     [ved] => 1t:429,r:9,s:201,i:556
    36. )
     
  7. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Код (Text):
    1. /search?q=тута запрос
    Код (Text):
    1. [prev] => /search?q
    я три раза прокрутил сверху-вниз и обратно, и в упор не вижу там "тута запрос"
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я тя понял

    Добавлено спустя 1 минуту 32 секунды:
    ща...
    скайп ломится...

    Добавлено спустя 1 минуту 17 секунд:
    замени строку на $tmp = explode('=', $query, 2);
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    неправильный я код написал. о функции не знал или забыл. вот код верный.

    Код (PHP):
    1. $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";
    2. $url = parse_url($string);
    3. parse_str($url['query'],$queries);
    4.  
    5.  
    6. echo "<pre>";
    7. print_r($url);
    8. print_r($queries);
    9. echo "</pre>";