Измените имя строки с помощью preg_replace, удалите акцент пробела и точки, но разрешите расширение точек - PullRequest
1 голос
/ 11 октября 2019

У меня есть код, который работает, удаляя точки и разрешая расширение точек, но ударение выглядит так:

Sin título => Sin_tÃ_tulo

$new_name = preg_replace("/\W(?=.*\.[^.]*$)/", "_", $string);

Я хочуудалить акцент или поменять на подчеркивание

1 Ответ

2 голосов
/ 12 октября 2019

Два предложения с использованием 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
...