Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak wyświetlić słowa kluczowe
oi.
post 21.02.2011, 19:35:08
Post #1





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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" ?
Go to the top of the page
+Quote Post
sazian
post 21.02.2011, 19:56:38
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


wyrażeniem regularnym questionmark.gif wink.gif
Go to the top of the page
+Quote Post
oi.
post 22.02.2011, 21:06:35
Post #3





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
erix
post 22.02.2011, 21:09:04
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




parse_url + parse_str, po co wyrażenia?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
oi.
post 23.02.2011, 17:22:51
Post #5





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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.

Ten post edytował oi. 23.02.2011, 17:33:14
Go to the top of the page
+Quote Post
minolone
post 23.02.2011, 18:01:35
Post #6





Grupa: Zarejestrowani
Postów: 141
Pomógł: 24
Dołączył: 21.06.2008

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
oi.
post 23.02.2011, 19:12:00
Post #7





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


Minolone działa :-D

jedyny problem tkwi jeszcze że gubi polskie znaki otrzymuję np Ä�
Go to the top of the page
+Quote Post
Valdi_B
post 23.02.2011, 19:16:10
Post #8





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Valdi_B 23.02.2011, 19:19:14
Go to the top of the page
+Quote Post
oi.
post 23.02.2011, 19:43:54
Post #9





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
erix
post 23.02.2011, 20:32:40
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To znaczy?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
oi.
post 23.02.2011, 22:54:02
Post #11





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
minolone
post 23.02.2011, 23:35:49
Post #12





Grupa: Zarejestrowani
Postów: 141
Pomógł: 24
Dołączył: 21.06.2008

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował minolone 23.02.2011, 23:47:07
Go to the top of the page
+Quote Post
oi.
post 25.02.2011, 17:29:20
Post #13





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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 ł
Go to the top of the page
+Quote Post
erix
post 26.02.2011, 12:28:36
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




bo to jeszcze trzeba do UTF-8 przekodować. wink.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:49