Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozpoznawanie stron po adresie
Forum PHP.pl > Forum > PHP
rav1989
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
adbacz
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 smile.gif
mortus
No prawie dobrze:
  1. $pattern = '#\.(blip|facebook|twitter|nasza-klasa|nk|blogspot|lastfm|youtube)\.#';
lukaskolista
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)
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.