Przyjazne polskie URL w PHP
Napisany : 07-06-2011 | Przez : Dexterxx® | Kategoria : WebDev
Tagi: PHP, RegEx, SEO, URL
1
Kodzę od tygodnia większy cms w związku z moimi służbowymi obowiązkami. Zaistniałą sytuacja, aby generować przyjazne URL’y (na potrzeby seo, wyglądu, ogólnej harmonii i estetyki) odporne na polskie ogonki na podstawie na przykład tytułu contentu. Jakotako lepszego polskiego rozwiązania na szybko nie mogłem się doszukać, tak więc przedstawiam rozwiązanie, z którego aktualnie korzystam i które wydaje mi się najlepsze.
function coolUrl( $url, $maxLength = 50 ){
$S = array('/ą/', '/ż/', '/ź/', '/ę/', '/ć/', '/ń/', '/ó/', '/ł/', '/ś/', '/Ą/', '/Ż/', '/Ź/', '/Ę/', '/Ć/', '/Ń/', '/Ó/', '/Ł/', '/Ś/');
$R = array('a', 'z', 'z', 'e', 'c', 'n', 'o', 'l', 's', 'A', 'Z', 'Z', 'E', 'C', 'N', 'O', 'L', 'S');
$url = preg_replace( $S, $R, $url );
$url = strtolower( trim( $url ) );
$url = preg_replace('/\?/', '', $url );
$url = preg_replace('/[^a-z0-9-]/', '-', $url );
$url = preg_replace('/-+/', "-", $url );
$url = substr( $url, 0, $maxLength );
return $url;
}Dla nieogarniętych w wyrażeniach regularnych albo całym tym kodzeniu zasada działania:
- Najpierw definiuje dwie tablice polskich, denerwujących znaków oraz ich zamienników (mogłem to zrobić po strtolower – ktoś teraz może jednak szybciej sobie skopiować. Chyba nie pominąłem żadnego znaku?)
- Zamieniamy polskie ogonkowe literki na bezogonkowe odpowiedniki
- Przycinamy nasz url pozbywając się spacji przed i po odpowiednim ciągu. Ten wynik wędruje w funkcji zwracającej string tylko w postaci małych liter
- Wykopujemy backslash
- Wszystko po za małym podstawowym alfabetem i cyframi zamieniane jest na myślnik
- Kilka myślników przy sobie zamieniamy na jeden
- Ostatecznie przycinamy string do maksymalnej długości zdefiniowanej w drugim argumencie wywołania funkcji
- Zwracamy przefiltrowany ciąg
Przykład?
Rybki zostały dzisiaj nakarmione
zamieni na:
rybki-zostaly-dzisiaj-nakarmione
Inny przykład
Żongler dzisiaj---jutro co za DURNY TaJteL
zamieni na:
zongler-dzisiaj-jutro-co-za-durny-tajtel
Oczywiście sugestie mile widziane. Ostatnio czasem jestem nieziemsko ślepy na błędy, a i przykłady procesorowałem w mojej głowie.
Daj innym to przeczytać:

Cześć,
wiem, że trochę dawno post napisany ale Stormfly jakiś czas temu przedstawił przyjemne rozwiązanie: http://sf.jogger.pl/2007/05/19/przyjazne-linki/
Może się przyda.