Boas. Ao nível de direitos sobre o código, devo remeter-vos para o meu primeiro artigo desta rubrica.
Para esta semana apresento-vos uma função, ou melhor, um conjunto de funções que são usadas pela principal, cujo objectivo é converter uma string “normal” (normalmente um título de artigo ou semelhante) numa string SEF (Search-Engine Friendly), ou seja, algo que seja facilmente interpretado pelos motores de busca (e pelos browsers) sem problemas, para finalmente poder ser usado na construção de um URL.
<?php
function getSEFName($string) {
$string = trim($string);
$string = str_replace("_"," ",$string);
while (strpos($string," ")) {
$string = str_replace(" "," ",$string);
}
$string = str_replace(" ","-",$string);
$string = low($string);
$string = special_convert($string);
$string = low($string);
$string = preg_replace('/[^a-z0-9-]/s','',$string);
return $string;
}
function special_convert($var){
$chars = array(
"À" => "A",
"à" => "a",
"Â" => "A",
"â" => "a",
"Ä" => "A",
"ä" => "a",
"Á" => "A",
"á" => "a",
"Ã" => "A",
"ã" => "a",
"Å" => "A",
"å" => "a",
"Æ" => "AE",
"æ" => "ae",
"ß" => "B",
"Ç" => "C",
"ç" => "c",
"È" => "E",
"è" => "e",
"Ê" => "E",
"ê" => "e",
"É" => "E",
"é" => "e",
"Ë" => "E",
"ë" => "e",
"?" => "E",
"?" => "e",
"Ì" => "I",
"ì" => "i",
"Î" => "I",
"î" => "i",
"Í" => "I",
"í" => "i",
"Ï" => "I",
"ï" => "i",
"Ð" => "D",
"ð" => "d",
"Ñ" => "N",
"ñ" => "n",
"Ò" => "O",
"ò" => "o",
"Ô" => "O",
"ô" => "o",
"Ö" => "O",
"ö" => "o",
"Ó" => "O",
"ó" => "o",
"Õ" => "O",
"õ" => "o",
"Ø" => "O",
"ø" => "o",
"Ú" => "U",
"ú" => "u",
"Ü" => "U",
"ü" => "u",
"Ù" => "U",
"ù" => "u",
"Û" => "U",
"û" => "u",
"Ý" => "Y",
"ý" => "y",
"?" => "Y",
"ÿ" => "y"
);
return str_replace(array_keys($chars),$chars,$var);
}
function low($str) {
return mb_strtolower($str,"UTF-8");
}
?>
Modo de utilização:
É bastante simples e intuitivo, segue um exemplo de como transformar o título, por exemplo, “Windows 7 – Instalação Fácil” em “windows-7-instalacao-facil”
<?php $titulo = “Windows 7 – Instalação Fácil”; echo getSEFName($titulo); ?>
Qualquer dúvida ou sugestão, estão completamente à vontade.