Przyjazne polskie URL w PHP

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:

  1. 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?)
  2. Zamieniamy polskie ogonkowe literki na bezogonkowe odpowiedniki
  3. 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
  4. Wykopujemy backslash
  5. Wszystko po za małym podstawowym alfabetem i cyframi zamieniane jest na myślnik
  6. Kilka myślników przy sobie zamieniamy na jeden
  7. Ostatecznie przycinamy string do maksymalnej długości zdefiniowanej w drugim argumencie wywołania funkcji
  8. 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.

Tagi: , , ,

Komentarze (1)

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.

Skomentuj