[PHP] Przyjazne linki
Przyjazne linki na stronach internetowych to ju偶 od wielu lat standard, jednak du偶a cz臋艣膰 webmaster贸w nie stosuje tego standardu i nadal na wielu witrynach mo偶emy spotka膰 odno艣niki w stylu ?id=1. Dla u偶ytkownika przegl膮daj膮cego stron臋 nie ma r贸偶nicy, czy odno艣niki na niej s膮 przyjazne, czy te偶 nie. Je艣li chodzi o wyszukiwarki to ten temat nie jest ju偶 bez znaczenia, poniewa偶 jak wiadomo - adresy url maj膮 wp艂yw na pozycj臋 strony.
Podczas tworzenia strony w czystym HTML nie ma problemu z przyjaznymi linkami, poniewa偶 poprostu zapisujemy pliki kolejnych podstron z odpowiednimi nazwami, np. kontakt.html. Przy tworzeniu dynamicznych stron w j臋zykach do tego przeznaczonych np. PHP, sprawa jest ju偶 nieco trudniejsza. Po pierwsze - serwer, na kt贸rym hostujemy stron臋 musi spe艂nia膰 okre艣lone wymagania tzn. pozwala膰 na przepisywanie adres贸w. Po drugie - programista powinien napisa膰 tak mechanizm strony, aby automatycznie generowa艂 przyjazne URL'e. W tym artykule napiszemy w艂a艣nie taki prosty mechanizm generuj膮cy przyjazne adresy URL i prost膮 regu艂臋 w pliku .htaccess przepisuj膮c膮 je. Nasz mechanizm b臋dzie tworzy膰 linki w formacie /strona/x.
Plik .htaccess
W pliku .htaccess dopisujemy nast臋puj膮c膮 regu艂臋:
RewriteRule ^([a-z]+)/([0-9]+)$ /index.php?id=$2
Funkcja PHP
Nasza docelowa funkcja b臋dzie pobiera艂a tytu艂 strony i zwraca艂a "czysty" string, kt贸ry nada si臋 na segment przyjaznego URL'a. Przedtem jednak musimy napisa膰 jeszcze dodatkow膮 funkcj臋, kt贸ra b臋dzie usuwa艂a ze stringu niepotrzebne znaki specjalne, a tak偶e zamienia艂a polskie litery diakrytyczne na znaki bez ogonk贸w, poniewa偶 nie chcemy takich znak贸w w linkach. Jak napisa膰 ow膮 funkcj臋 dowiesz si臋 czytaj膮c wpis Jak usun膮膰 polskie znaki z tekstu.
Funkcja PHP
<?php
function friendly_links($string)
{
$string = strtolower($string);
$string = replace_diacritics($string);
$string = str_replace(' ', '-', $string);
$string = preg_replace('/[^[:alnum:]]/', '-', $string);
$string = trim($string, '-');
return $string;
}
Utworzona zosta艂a funkcja friendly_links, kt贸ra za argument przyjmuje ci膮g znak贸w np. tytu艂 strony, a nast臋pnie filtruje ten ci膮g i zwraca w formacie, kt贸ry nada si臋 jako element URL'a. Pierwsze co robi funkcja to zmienia wszystkie litery w ci膮gu tekstowym na ma艂e dzi臋ki funkcji mb_strtolower, nast臋pnie zamienia wszystkie litery diakrytyczne na zwyk艂e litery przy u偶yciu wcze艣niej utworzonej funkcji replace_diacritics, kt贸r膮 jak napisa膰 dowiesz si臋 klikaj膮c w link powy偶ej. Kolejny etap to zast膮pienie wszystkich znak贸w w stringu nie b臋d膮cych literami i cyframi na znak my艣lnika. Robimy to u偶ywaj膮c wyra偶enia regularnego w funkcji preg_replace. Na ko艅cu usuwamy z pocz膮tku i ko艅ca ci膮gu znak my艣lnika (je艣li wyst膮pi) i zwracamy nasz string w czystej postaci.
Przyk艂adowe u偶ycie
<?php echo friendly_links('Tytu艂 artyku艂u');
// Wy艣wietli "tytul-artykulu"<a href="/<?= friendly_links($title) . '/' . $id ?>">Tytu艂 artyku艂u</a>
Komentarze
Prze艣lij komentarz
Dzi臋ki za komentarz!