У меня есть код, который работает, удаляя точки и разрешая расширение точек, но ударение выглядит так:
Sin título => Sin_tÃ_tulo
$new_name = preg_replace("/\W(?=.*\.[^.]*$)/", "_", $string);
Я хочуудалить акцент или поменять на подчеркивание
Два предложения с использованием intl (если этот модуль отсутствует в вашей конфигурации, установите его):
$tls = Transliterator::createFromRules("::Latin-ASCII; [^A-Za-z0-9] > '_' "); echo $tls->transliterate("Sin título"); // Sin_titulo
или:
$tls = Transliterator::createFromRules("::NFD; [^A-Za-z0-9] > '_' "); echo $tls->transliterate("Sin título"); // Sin_ti_tulo