Podczas optymalizacji serwisu www często konieczne jest utworzenie adresów URL opartych o przyjazne linki. Jak wiemy, ważne jest także by w adresie url znajdował się fragment tekstu, który będzie go odróżniał od innych, np dla sklepu internetowego będzie to nazwa produktu lub kategorii.
Z racji tego, że każdy z skryptów stworzony jest w inny sposób nie ma uniwersalnej metody tworzenia przyjaznych linków. Aby sobie ułatwić stworzyłem prostą funkcję przygotowującą fragment tekstu do umieszczenie go w przyjaznym linku.
function friendlyLinks($link){
$search = array('
', '
', '>', '&', ':', '_', '"', '&', '!', '@', '#', '$', '%', '^', '*', '(', ')', '[', ']', '/', '\'', '.', '+', '?', '>', ',', ';', '\n', "'", '`', '\\', '{', '}');
$link = str_replace($search, '', $link);
$tabela = Array(
//WIN
"\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
"\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
"\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
"\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
"\xf1" => "n", "\xd1" => "N",
//UTF
"\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
"\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
"\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
"\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
"\xc5\x84" => "n", "\xc5\x83" => "N",
//ISO
"\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
"\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
"\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
"\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
"\xf1" => "n", "\xd1" => "N");
$link = strtr($link,$tabela);
$link = preg_match('/.{1,40}.\s/', $link.' ', $matches);
$link = $matches[0];
$link = preg_replace('/[(\s)]+|&|&/', '-', $link);
$link = trim($link , '- ');
return $link;
}
Linie 2-3: Wyrzucam z tekstu wszelkie "zdobniki".
Linie 5-25: Zmieniam wszystkie polskie znaki na ich rzymskie odpowiedniki. Zapis w bajtach sprawia, że nie muszę martwić się o kodowanie tekstu; ułatwia działanie w przypadku systemów konwertujących łańcuchy na inne kodowania.
W przykładzie funkcja zmienia znaki z zachowaniem wielkości liter. Na mojej stronie, jak widać, URLe są wpisywane z małych liter - kwestia przyzwyczajenia.
Linie 26-27: Za pomocą wyrażenia regularnego obcinam długość tekstu do żądanej wartości maksymalnej (tutaj 40 znaków). Dodanie spacji na końcu tekstu i w wyrażeniu regularnym pozwala przyciąć tekst nie do równych 40 znaków lecz do pełnych wyrazów mieszczących się w 40 znakach.
Linia 28: Zamiana wszystkich spacji na myślniki. Wiele spacji znajdujących się koło siebie zostanie zamienione na jeden myślnik.
Linia 29: Dopisana kiedyś na wszelki wypadek, jako zabezpieczenie przed ewentualnymi niepotrzebnymi znakami na początku lub końcu łańcucja znaków.
RSS:Jeżeli jesteś zainteresowany(a) zawartością bloga skorzystaj z dostępu do nowości za pomocą kanału RSS. Pozwoli on na szybką subskrypcję nowości.
Ogólny kanał RSS