Функция Slug, удаляющая буквы с URL - PullRequest
0 голосов
/ 20 февраля 2019

Функция ниже работает, но я не могу понять причину переключения, исключая буквы, содержащие специальные символы:

   function slug( $string, $separator = '-' ) {
        $accents_regex = '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i';
        $special_cases = array( '&' => 'and', "'" => '');
        $string = mb_strtolower( trim( $string ), 'UTF-8' );
        $string = str_replace( array_keys($special_cases), array_values( $special_cases), $string );
        $string = preg_replace( $accents_regex, '$1', htmlentities( $string, ENT_QUOTES, 'UTF-8' ) );
        $string = preg_replace("/\s+/", "$separator", $string);
        $string = preg_replace("/[$separator]+/u", "$separator", $string);
        return $string;
    }

пример:

строка: "um rádio bonito"

результат должен быть: "um-radio-bonito"

, но результат: "um-rdio-bonito"

1 Ответ

0 голосов
/ 20 февраля 2019

Эта функция может помочь вам

function cleanAccents($r)
{
    $r = preg_replace("/ß/","ss", $r);
    $r = preg_replace("/[àáâãäå]/","a", $r);
    $r = preg_replace("/æ/","ae", $r);
    $r = preg_replace("/ç/","c", $r);
    $r = preg_replace("/[èéêë]/","e", $r);
    $r = preg_replace("/[ìíîï]/","i", $r);
    $r = preg_replace("/ñ/","n", $r);
    $r = preg_replace("/[òóôõö]/","o", $r);
    $r = preg_replace("/œ/","oe", $r);
    $r = preg_replace("/[ùúûü]/","u", $r);
    $r = preg_replace("/[ýÿ]/","y", $r);        
    return $r;
}
...