Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak wyświetlić słowa kluczowe
Forum PHP.pl > Forum > Przedszkole
oi.
Mam statystykę odwiedzin i za pomocą
  1. $adres= $_SERVER['HTTP_REFERER'];
pobieram adres z jakiego użytkownik odwiedził moją witrynę.
Otrzymuję
  1. http://www.google.pl/url?sa=t&source=web&cd=10&ved=0CGjAJ&url=http%3A%2F%2Fwww.domena.pl%2Fpodstrona-id16.html&rct=j&q=przykladowe%20slowo%20kluczowe&ei=FpRiTbSpHgOEu5jxCA&usg=AFQjCNEnlggycl2ooRBdoyCrNfooOw&sig2=181s6ZGI

jak z tego ciągu znaków wyłuskać "przykladowe slowo kluczowe" ?
sazian
wyrażeniem regularnym questionmark.gif wink.gif
oi.
Ok, wyrażenia regularne, ale jak konkretnie się do tego zabrać, w necie znalazłem jedno rozwiązanie - Klasa z funkcją , ale po podstawieniu do swego przykładu nie wyświetlała żadnych informacji.
erix
parse_url + parse_str, po co wyrażenia?
oi.
Erix Twoje rozwiązanie jest OK tylko jak podstawiam przykład z manuala:
  1. <?php
  2. $url = 'http://uzytkownik:haslo@serwer/sciezka?arg=wartosc#kotwica';
  3. echo parse_url($url, PHP_URL_PATH);
  4. ?>

to otrzymuję błąd:
  1. Array ( [scheme] => http [host] => serwer [user] => uzytkownik [pass] => haslo [path] => /sciezka [query] => arg=wartosc [fragment] => kotwica )
  2. Warning: parse_url() expects exactly 1 parameter, 2 given in /home/users/test.php on line 6


Przerobiłem na :
  1. <?php
  2. $url = 'http://www.google.pl/url?sa=t&source=web&cd=10&ved=0CGjAJ&url=http%3A%2F%2Fwww.domena.pl%2Fpodstrona-id16.html&r
  3. ct=j&q=przykladowe%20slowo%20kluczowe&ei=FpRiTbSpHgOEu5jxCA&usg=AFQjCNEnlggycl2ooRBdoyCrNfooOw&sig2=181s6ZGI';
  4.  
  5. $p = parse_url( $url );
  6. $host = explode('q', $p['host']);
  7. $hostname = $host[0];
  8.  
  9. echo" $hostname <br /> ";
  10.  
  11. ?>

i otrzymuję w wyniku www.google.pl
gdzie leży błąd ? Podejrzewam że w explode jest coś nie tak.
minolone
  1. <?php
  2. $url = 'http://www.google.pl/url?sa=t&source=web&cd=10&ved=0CGjAJ&url=http%3A%2F%2Fwww.domena.pl%2Fpodstrona-id16.html&r
  3. ct=j&q=przykladowe%20slowo%20kluczowe&ei=FpRiTbSpHgOEu5jxCA&usg=AFQjCNEnlggycl2ooRBdoyCrNfooOw&sig2=181s6ZGI';
  4.  
  5. parse_str($url);
  6. echo $q;
  7.  
  8. ?>
oi.
Minolone działa :-D

jedyny problem tkwi jeszcze że gubi polskie znaki otrzymuję np Ä�
Valdi_B
A propos "protestu":
Warning: parse_url() expects exactly 1 parameter, 2 given
(nieco powyżej):

Drugi parametr w parse_url pojawił się od wersji 5.1.2.
Zobacz http://pl2.php.net/parse_url

Może masz wcześniejszą wersję PHP?

Drugie spostrzeżenie co do $host = explode('q', $p['host']);
String - nazwę hosta "tniesz na kawałki" gdzie separatorem kawałków jest litera "q".
Dlaczego?
Może separatorem powinno być coś innego?
oi.
Mama jeszcze jeden problem gdy wstawiam to w pętlę, otrzymuję nie pasujące do siebie słowa kluczowe ze zmiennej $q
  1. <?php
  2.  
  3. while ($kom = mysql_fetch_array($wynik))
  4. {
  5. $id = $kom['id'];
  6. $ip = $kom['ip'];
  7. $url= $kom['url'];
  8.  
  9. parse_str($url);
  10.  
  11. <div class=\"stat\">
  12. <div class=\"st\"> $id </div>
  13. <div class=\"stl\"> $ip </div>
  14. <div class=\"stxl\"><a href=\"$url\" title=\"$url\">adres</a> $q</div>
  15. </div>";
  16.  
  17. ?>
erix
To znaczy?
oi.
To znaczy, że jakoś nie po kolei wyświetla dane, np jak nie jest wejście z google to wrzuca poprzedni rekord.
Troche dziwna ta zmienna $q która nie jest zadeklarowana a zawiera dane.
minolone
  1. <?php
  2.  
  3. $url = 'http://www.google.pl/url?sa=t&source=web&cd=10&ved=0CGjAJ&url=http%3A%2F%2Fwww.domena.pl%2Fpodstrona-id16.html&rct=j&q=przykladowe%20slowo%20kluczowe&ei=FpRiTbSpHgOEu5jxCA&usg=AFQjCNEnlggycl2ooRBdoyCrNfooOw&sig2=181s6ZGI';
  4. parse_str($url, $output);
  5.  
  6. $parse_url = parse_url($url);
  7. parse_str($parse_url['query'], $output_url);
  8.  
  9. echo $output['q']; //Może ją tak wyświetlaj
  10.  
  11. echo '<pre>'; //Sprawdź jak wygląda tablica z innym linkiem, może wyświetla ci poprzedni bo w innnym nie ma zmiennej q
  12. print_r($output); //Tutaj zobaczysz jak dany link jest rozbijany na klucz => wartość
  13. echo '</pre>';
  14.  
  15. echo '<pre>';
  16. echo '</pre>';
  17.  
  18. echo '<pre>';
  19. print_r($output_url);
  20. echo '</pre>';
  21. ?>


Dodałem ci całkowite rozbicie, funkcjami które podał ci ~erix, teraz to już napewno sobie poradzisz.
oi.
Minolone dziękuję o to właśnie chodziło
Wyświetlam za pomocą kodu:
  1. parse_str($skad, $output);
  2. $parse_url = parse_url($skad);
  3. parse_str($parse_url['query'], $output_url);
  4. echo $output['q'];

Jest dobrze prawidłowo wyświetla, błędne dane były jak zwróciłeś uwagę dlatego że w statystyce były wyświetlane także adresy z wejść mojej strony np www.domena.pl/coś.html a tu nie było parametru q.

Czasem google ma adres:
  1. http://www.google.pl/search?q=przykładowe+słowo+kluczowe&hl=pl&lr=&client=firefox-a&hs=Ptf&rls=org.mozilla:pl:official&channel=s&prmd=ivnsc&ei=j8xnTdjq6dOo6clJ8YL&start=10&sa=N

i tego mi poprawnie nie wyświetla pozostawia puste pole

Mam nadal problem z polskimi znakami. Adres $url poprawnie wyświetla polskie znaki w adresie, natomiast po wyjęciu słów kluczowych z adresu $url mam krzaczki np Ĺ� zamiast ł
erix
bo to jeszcze trzeba do UTF-8 przekodować. wink.gif
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.