Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rozpoznawanie stron po adresie
rav1989
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


Witam,

Stworzyłem f-cje która rozpoznaje mi stronę po adresie

  1. function sitename($url){
  2. if(preg_match('@(blip|facebook|twitter|nasza-klasa|nk|blogspot|lastfm|youtube)@', $url, $site)){
  3. //var_dump($url);
  4. switch($site[1]){
  5. case 'nasza-klasa':
  6. $site[1] = 'nk';
  7. break;
  8. case 'blogspot':
  9. $site[1] = 'blogger';
  10. break;
  11. default:
  12. break;
  13. }
  14. $shortname = $site[1];
  15. }else{
  16. $shortname = 'www';
  17. }
  18. return $shortname;
  19. }


jak widać są to w przewadze portale społecznościowe (brakuje mi jeszcze Google+ ale to dodam jak już ruszy).

No i teraz jest problem ponieważ jak ktoś poda adres który zawiera słowo ze wzorca to przypisuje błędnie nazwę np. jak ktoś poda stronę http://ranking.costam.pl to rozpozna to jako nk (nasza-klasa) ponieważ występuje raNKing to samo w innych tego typu sytuacjach...
teraz pojawia się pytanie jak mam to zrobić aby mi ta f-cja działała prawidłowo.... te krótkie nazwy potrzebne mi są aby podpiąć właściwą ikonkę (nazwy ikonek są takie jak na powyższej liście)

Pozdrawiam
Rav

Ten post edytował rav1989 28.07.2011, 20:43:05
Go to the top of the page
+Quote Post
adbacz
post
Post #2





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Nie znam sie zbytnio na Wyrażeniach Regularnych, ale wg mnie powinieneś zrobić jakies ograniczniki bo teraz to właśnie będzie tak działać. On (preg_match()) wyszukuje w danych wyrażeniu obojętnie które ciągi z tych podanych.

Musiałbyś zrobić tak, żeby preg_match() sprawdzał co jest przed i co po tych literach, które wyszukujesz. Wiesz, że są tam kropki, na końcu i na początku (przykładowo), to powinieneś dodać coś takiego (wiem, że źle, ale może zaczaisz o co mi chodzi):

$sprawdz = '/\.nk\.|\.blip\./';

Jeśli mam racje i ktoś bardziej obeznany przeczyta to jesli może - niech wyjaśni jak powinno być, tak dla potomnych (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


No prawie dobrze:
  1. $pattern = '#\.(blip|facebook|twitter|nasza-klasa|nk|blogspot|lastfm|youtube)\.#';
Go to the top of the page
+Quote Post
lukaskolista
post
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Od siebie dodam, ze liste stron (blip|facebook|twitter|nasza-klasa|nk|blogspot|lastfm|youtube) mozesz trzymac w tablicy (wedlug mnie lepiej) i ladowac ja do wyrazenia za pomoca
  1. implode('|', $sites)


Ten post edytował lukaskolista 29.07.2011, 08:10:43
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 04:57