Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_SERVER['HTTP_REFERER'] - wyodrębnianie słów kluczowych
Forum PHP.pl > Forum > PHP
smarcz
Witam szanowne gremium!

Szukam podpowiedzi lub rozwiązania problemu. Chciałbym wyodrębniać z ciągu zawartego w zmiennej $_SERVER['HTTP_REFERER'] - słowa kluczowe, które spowodowały odnalezienie mojej strony.

Np.: http://localhost:82/serwis/link.php?action...p;szukaj=Szukaj
(...)?action=znajdz&q=slawek+micha%B3&szukaj=Szukaj
chciałbym wyodrębnić tylko zawartość: q=slawek+micha%B3 - i oddzielić oba słowa kluczowe slawek i michal jako oddzielne.

Chodzi mi o skonstruowanie takiego rozwiązania, które będzie mogło badać przekierowania z google, itp...

co zastosować - wyrażenie regularne, explode - a może coś innego??

Wyrażenie regularne

$string = $_SERVER['HTTP_REFERER'];

preg_match_all("@&(.*?)&@", $string, $ciag);

echo '<pre>';
print_r($ciag);
echo '</pre>';


powoduje taki wynik:

Array
(
[0] => Array
(
[0] => &q=slawek+micha%B3&
)

[1] => Array
(
[0] => q=slawek+micha%B3
)

Z góry dzięki za wszelkie rady!
1010
nie rozumiem jaki problem...

explode ("+", $zmienna); i już...
smarcz
Być może źle sprecyzowałem - mamy w zmiennej $_SERVER['HTTP_REFERER'] pewien ciąg za pomocą którego zostaliśmy odnalezieni np.: przez google - (...?action=znajdz&q=slawek+micha%B3&szukaj=Szukaj). Z tego ciągu chcę wyodrębnić słowa kluczowe zawarte w q=; Wiem że są one oddzielone znakiem plusa i potrafię zastosować do tego explode() ale jak wyodrębnić sam ciąg który zaczyna się q=...jakieś słowa kluczowe ... - i tego nie potrafię zrobić - później nie ma już problemu. Tak więc moje pytanie to - jak z tego ciągu wyodrębnić wpierw ten ciąg q=slawek+micha%B3. No chyba że jest inne rozwiązanie - ale proszę jaśniej.

Z góry dzięki?

Kto pyta nie błądzi smile.gif
Eqalizer
  1. <?php
  2. $str = "http://localhost:82/serwis/link.php?action=znajdz&q=slawek+micha%B3+zenek&szukaj=Szukaj";
  3. preg_match_all("@q=(.*?)&@", $str, $tab);
  4.  
  5. echo "<pre>";
  6. print_r($tab);
  7. echo "</pre>";
  8. ?>


  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [0] => q=slawek+micha%B3+zenek&
  6. )
  7.  
  8. [1] => Array
  9. (
  10. [0] => slawek+micha%B3+zenek
  11. )
  12.  
  13. )

No i explode z drugiego wyniku.
b_chmura
Kod
'#[q=](.*?)\+#si'


coś w ten deseń
smarcz
Eqalizer - bardzo dziękuje za podpowiedź. Właśnie tego szukałem. Trochę inne sformułowanie niż zastosowałem ja, ale jak znaczące. W zupełności rozwiązało to moje nieudane próby z zastosowaniem nawet ereg_replace i ereg do wyszukiwania ciągów.
camillos
Odpowiedź spóźniona, ale może komuś się przyda.
Ja używam bardziej złożonej funkcji na różne szukarki, wyszukuje też wyszukane pliki graficzne.
  1. <?php
  2. FUNCTION search_keyword ($ref)
  3. {
  4. if(eregi('http://images.google',$ref)) {$sign='imgurl=';}
  5. else if (eregi('google',$ref)&&eregi('navclient',$ref)&&eregi('q=t&',$ref)) {$sing='q=t&';}
  6. else if (eregi('google',$ref)||eregi('szukacz.pl',$ref)||eregi('altavista',$ref)||eregi('netsprint',$ref)||eregi('search.msn',$ref)||eregi('search.live',$ref))
  7. {$sign='q=';}
  8. else if (eregi('onet', $ref))
  9. {$sign='qt=';}
  10. else if (eregi('szukaj.wp.pl',$ref))
  11. {$sign='szukaj=';}
  12. else if (eregi('search.yahoo.com',$ref))
  13. {$sign='p=';}
  14. else
  15. { $nokey='';
  16. return $nokey;
  17. }
  18. if ($sing=='q=t&')
  19. {
  20. $qwe0= explode($sign,$ref);
  21. $qwe1= explode('q=',$qwe0[1]);
  22. } else $qwe1= explode($sign,$ref);
  23. if (eregi("imgrefurl",$qwe1[1]))
  24. {$img=explode("imgrefurl=",$qwe1[1]);
  25. $imge=explode('/',$img[0]);
  26. $im=count($imge);
  27. $qwe3=$imge[$im-1];
  28. $qwe3=str_replace('&','',$qwe3);
  29. }
  30. else if (eregi("&",$qwe1[1]))
  31. {$qwe2=explode('&',$qwe1[1]);
  32. $qwe3=$qwe2[0];
  33. }
  34. else {
  35. $qwe3=$qwe1[1];}
  36. $qwe4 = odgooglanie($qwe3);
  37. echo "klucz: $qwe4 <br>";
  38. return $qwe4;
  39. }
  40. ?>
alfatka
Witam. Prosze o pomoc.
Ustawiłam w skrypcie zmienną $_SERVER['HTTP_REFERER'], aby wpisywała do tablicy pełny adres w celu wyodrębnienia słów kluczowych.

I okazało się, że nie mogę wyodrębnić tych słów, bo ich tu nie widać, powinna być po q=.
Jak zrobić, żeby były widoczne?

Mam taki zwrot zmiennej:
http : // www.google. pl / url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CC8QFjAC&url=http%3A%2F%2Fdomena.com.pl%2Fsubdomena&ei=PiacVMfeB8auU-yig6AL&usg

Ściągnęłam plik logów z serwera i rozpakowałam i tam są te słowa kluczowe po q=, ale chciałam, aby je wyłapywała zmienna $_SERVER['HTTP_REFERER'], aby je stąd wyodrębnić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.