Created
August 15, 2020 14:49
-
-
Save mindscms/2a4dc91cc8ab14d3beb66495aa72812e to your computer and use it in GitHub Desktop.
Class for maintain Arabic language in cviebrock/eloquent-sluggable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Setup: | |
* 1- Create MySlugHelper.php inside app/Helper/MySlugHelper.php | |
* 2- Edit config/sluggable.php: | |
* replace line ('method' => null,) with ('method' => [App\Helper\MySlugHelper::class, 'slug'],) | |
*/ | |
<?php | |
namespace App\Helper; | |
class MySlugHelper | |
{ | |
public static function slug($string, $separator = '-') { | |
$_transliteration = [ | |
'/ä|æ|ǽ/' => 'ae', | |
'/ö|œ/' => 'oe', | |
'/ü/' => 'ue', | |
'/Ä/' => 'Ae', | |
'/Ü/' => 'Ue', | |
'/Ö/' => 'Oe', | |
'/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A', | |
'/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a', | |
'/Ç|Ć|Ĉ|Ċ|Č/' => 'C', | |
'/ç|ć|ĉ|ċ|č/' => 'c', | |
'/Ð|Ď|Đ/' => 'D', | |
'/ð|ď|đ/' => 'd', | |
'/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E', | |
'/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e', | |
'/Ĝ|Ğ|Ġ|Ģ/' => 'G', | |
'/ĝ|ğ|ġ|ģ/' => 'g', | |
'/Ĥ|Ħ/' => 'H', | |
'/ĥ|ħ/' => 'h', | |
'/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I', | |
'/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i', | |
'/Ĵ/' => 'J', | |
'/ĵ/' => 'j', | |
'/Ķ/' => 'K', | |
'/ķ/' => 'k', | |
'/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L', | |
'/ĺ|ļ|ľ|ŀ|ł/' => 'l', | |
'/Ñ|Ń|Ņ|Ň/' => 'N', | |
'/ñ|ń|ņ|ň|ʼn/' => 'n', | |
'/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O', | |
'/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o', | |
'/Ŕ|Ŗ|Ř/' => 'R', | |
'/ŕ|ŗ|ř/' => 'r', | |
'/Ś|Ŝ|Ş|Ș|Š/' => 'S', | |
'/ś|ŝ|ş|ș|š|ſ/' => 's', | |
'/Ţ|Ț|Ť|Ŧ/' => 'T', | |
'/ţ|ț|ť|ŧ/' => 't', | |
'/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U', | |
'/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u', | |
'/Ý|Ÿ|Ŷ/' => 'Y', | |
'/ý|ÿ|ŷ/' => 'y', | |
'/Ŵ/' => 'W', | |
'/ŵ/' => 'w', | |
'/Ź|Ż|Ž/' => 'Z', | |
'/ź|ż|ž/' => 'z', | |
'/Æ|Ǽ/' => 'AE', | |
'/ß/' => 'ss', | |
'/IJ/' => 'IJ', | |
'/ij/' => 'ij', | |
'/Œ/' => 'OE', | |
'/ƒ/' => 'f' | |
]; | |
$quotedReplacement = preg_quote($separator, '/'); | |
$merge = array( | |
'/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ', | |
'/[\s\p{Zs}]+/mu' => $separator, | |
sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '', | |
); | |
$map = $_transliteration + $merge; | |
unset($_transliteration); | |
return mb_strtolower(preg_replace(array_keys($map), array_values($map), $string)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thnx