URLs amig√°veis ‚Äč‚Äčpara SEO com um filtro Zend

curiosamente, não consegui encontrar um filtro adequado que tratasse da transliteração de caracteres especiais e de vários espaços, então escrevi isso há algum tempo.

class My_Filter_SEOfriendly implements Zend_Filter_Interface
{
/**
* @var string $separator

*/

private $separator;

/**
* @param string $separator

*/

public function __construct($separator = "-")
{
$this
->separator = $separator;
}

/**
* transliterates and slugifies

* note: please provide UTF-8 input, otherwise iconv() will trigger a notice

*

* @param string $value

* @return string

*/

public function filter($value)
{
$value
= strtolower($value);

if (function_exists('iconv')) {
$value
= iconv('UTF-8', 'ASCII//TRANSLIT', $value);
}

$value
= preg_replace("/[^[a-z0-9]+/", ' ', $value);
$value
= trim($value);
$value
= preg_replace("/[s]/", $this->separator, $value);

return $value;
}
}

é um pouco desatualizado e áspero, mas fará o trabalho. Vou tentar portá-lo para ZF2 em breve.

[ATUALIZAÇÃO 11/2012]
parece que um filtro completo será incluído na versão 2.1 do framework zend: https://github.com/zendframework/zf2/pull/2190

[ATUALIZAÇÃO 05/2013]
Esse PR não entrou no mestre ZF2, mas o filtro está disponível neste módulo: https://github.com/Bacon/BaconStringUtils