mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Foreign character support for Inflector::slug, fixes #3492
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@6753 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
268bb42a02
commit
9154ef1953
2 changed files with 35 additions and 1 deletions
|
@ -421,7 +421,25 @@ class Inflector extends Object {
|
|||
* @static
|
||||
*/
|
||||
function slug($string, $replacement = '_') {
|
||||
$string = preg_replace(array('/[^\w\s]/', '/\\s+/') , array(' ', $replacement), $string);
|
||||
$map = array(
|
||||
'/à|á|å|â/' => 'a',
|
||||
'/è|é|ê|ẽ|ë/' => 'e',
|
||||
'/ì|í|î/' => 'i',
|
||||
'/ò|ó|ô|ø/' => 'o',
|
||||
'/ù|ú|ů|û/' => 'u',
|
||||
'/ç/' => 'c',
|
||||
'/ñ/' => 'n',
|
||||
'/ä|æ/' => 'ae',
|
||||
'/ö/' => 'oe',
|
||||
'/ü/' => 'ue',
|
||||
'/Ä/' => 'Ae',
|
||||
'/Ü/' => 'Ue',
|
||||
'/Ö/' => 'Oe',
|
||||
'/ß/' => 'ss',
|
||||
'/[^\w\s]/' => ' ',
|
||||
'/\\s+/' => $replacement,
|
||||
);
|
||||
$string = preg_replace(array_keys($map), array_values($map), $string);
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -131,6 +131,22 @@ class InflectorTest extends UnitTestCase {
|
|||
$result = Inflector::slug('Foo Bar: Not just for breakfast any-more', "+");
|
||||
$expected = 'Foo+Bar+Not+just+for+breakfast+any+more';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = Inflector::slug('Äpfel Über Öl grün ärgert groß öko', '-');
|
||||
$expected = 'Aepfel-Ueber-Oel-gruen-aergert-gross-oeko';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = Inflector::slug('The truth - and- more- news', '-');
|
||||
$expected = 'The-truth-and-more-news';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = Inflector::slug('The truth: and more news', '-');
|
||||
$expected = 'The-truth-and-more-news';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = Inflector::slug('La langue française est un attribut de souveraineté en France', '-');
|
||||
$expected = 'La-langue-francaise-est-un-attribut-de-souverainete-en-France';
|
||||
$this->assertEqual($result, $expected);
|
||||
}
|
||||
|
||||
function testVariableNaming() {
|
||||
|
|
Loading…
Reference in a new issue