added Str::ascii method and fixed accented character problem in URL::slug.
This commit is contained in:
parent
86075c2765
commit
481d2aa7ec
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'/æ|ǽ/' => 'ae',
|
||||
'/œ/' => 'oe',
|
||||
'/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|А/' => 'A',
|
||||
'/à|á|â|ã|ä|å|ǻ|ā|ă|ą|ǎ|ª|а/' => 'a',
|
||||
'/Б/' => 'B',
|
||||
'/б/' => 'b',
|
||||
'/Ç|Ć|Ĉ|Ċ|Č|Ц/' => 'C',
|
||||
'/ç|ć|ĉ|ċ|č|ц/' => 'c',
|
||||
'/Ð|Ď|Đ|Д/' => 'D',
|
||||
'/ð|ď|đ|д/' => 'd',
|
||||
'/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Е|Ё|Э/' => 'E',
|
||||
'/è|é|ê|ë|ē|ĕ|ė|ę|ě|е|ё|э/' => 'e',
|
||||
'/Ф/' => 'F',
|
||||
'/ƒ|ф/' => 'f',
|
||||
'/Ĝ|Ğ|Ġ|Ģ|Г/' => 'G',
|
||||
'/ĝ|ğ|ġ|ģ|г/' => 'g',
|
||||
'/Ĥ|Ħ|Х/' => 'H',
|
||||
'/ĥ|ħ|х/' => 'h',
|
||||
'/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|И/' => 'I',
|
||||
'/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|и/' => 'i',
|
||||
'/Ĵ|Й/' => 'J',
|
||||
'/ĵ|й/' => 'j',
|
||||
'/Ķ|К/' => 'K',
|
||||
'/ķ|к/' => 'k',
|
||||
'/Ĺ|Ļ|Ľ|Ŀ|Ł|Л/' => 'L',
|
||||
'/ĺ|ļ|ľ|ŀ|ł|л/' => 'l',
|
||||
'/М/' => 'M',
|
||||
'/м/' => 'm',
|
||||
'/Ñ|Ń|Ņ|Ň|Н/' => 'N',
|
||||
'/ñ|ń|ņ|ň|ʼn|н/' => 'n',
|
||||
'/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|О/' => 'O',
|
||||
'/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|о/' => 'o',
|
||||
'/П/' => 'P',
|
||||
'/п/' => 'p',
|
||||
'/Ŕ|Ŗ|Ř|Р/' => 'R',
|
||||
'/ŕ|ŗ|ř|р/' => 'r',
|
||||
'/Ś|Ŝ|Ş|Š|С/' => 'S',
|
||||
'/ś|ŝ|ş|š|ſ|с/' => 's',
|
||||
'/Ţ|Ť|Ŧ|Т/' => 'T',
|
||||
'/ţ|ť|ŧ|т/' => 't',
|
||||
'/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|У/' => 'U',
|
||||
'/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|у/' => 'u',
|
||||
'/В/' => 'V',
|
||||
'/в/' => 'v',
|
||||
'/Ý|Ÿ|Ŷ|Ы/' => 'Y',
|
||||
'/ý|ÿ|ŷ|ы/' => 'y',
|
||||
'/Ŵ/' => 'W',
|
||||
'/ŵ/' => 'w',
|
||||
'/Ź|Ż|Ž|З/' => 'Z',
|
||||
'/ź|ż|ž|з/' => 'z',
|
||||
'/Æ|Ǽ/' => 'AE',
|
||||
'/ß/'=> 'ss',
|
||||
'/IJ/' => 'IJ',
|
||||
'/ij/' => 'ij',
|
||||
'/Œ/' => 'OE',
|
||||
'/Ч/' => 'Ch',
|
||||
'/ч/' => 'ch',
|
||||
'/Ю/' => 'Ju',
|
||||
'/ю/' => 'ju',
|
||||
'/Я/' => 'Ja',
|
||||
'/я/' => 'ja',
|
||||
'/Ш/' => 'Sh',
|
||||
'/ш/' => 'sh',
|
||||
'/Щ/' => 'Shch',
|
||||
'/щ/' => 'shch',
|
||||
'/Ж/' => 'Zh',
|
||||
'/ж/' => 'zh',
|
||||
|
||||
);
|
|
@ -57,6 +57,21 @@ public static function length($value)
|
|||
return function_exists('mb_strlen') ? mb_strlen($value, Config::get('application.encoding')) : strlen($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a string to 7-bit ASCII.
|
||||
*
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
public static function ascii($value)
|
||||
{
|
||||
$foreign = Config::get('ascii');
|
||||
|
||||
$value = preg_replace(array_keys($foreign), array_values($foreign), $value);
|
||||
|
||||
return preg_replace('/[^\x09\x0A\x0D\x20-\x7E]/', '', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a random alpha or alpha-numeric string.
|
||||
*
|
||||
|
|
|
@ -109,6 +109,8 @@ public static function to_secure_route($name, $parameters = array())
|
|||
*/
|
||||
public static function slug($title, $separator = '-')
|
||||
{
|
||||
$title = html_entity_decode(Str::ascii($title), ENT_QUOTES, Config::get('application.encoding'));
|
||||
|
||||
// Remove all characters that are not the separator, letters, numbers, or whitespace.
|
||||
$title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', Str::lower($title));
|
||||
|
||||
|
|
Loading…
Reference in New Issue