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