3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php function translit($string){ $rus = array("/а/", "/б/", "/в/", "/г/", "/ґ/", "/д/", "/е/", "/ё/", "/ж/", "/з/", "/и/", "/й/", "/к/", "/л/", "/м/", "/н/", "/о/", "/п/", "/р/", "/с/", "/т/", "/у/", "/ф/", "/х/", "/ц/", "/ч/", "/ш/", "/щ/", "/ы/", "/э/", "/ю/", "/я/", "/ь/", "/ъ/", "/і/", "/ї/", "/є/", "/А/", "/Б/", "/В/", "/Г/", "/ґ/", "/Д/", "/Е/", "/Ё/", "/Ж/", "/З/", "/И/", "/Й/", "/К/", "/Л/", "/М/", "/Н/", "/О/", "/П/", "/Р/", "/С/", "/Т/", "/У/", "/Ф/", "/Х/", "/Ц/", "/Ч/", "/Ш/", "/Щ/", "/Ы/", "/Э/", "/Ю/", "/Я/", "/Ь/", "/Ъ/", "/І/", "/Ї/", "/Є/"); $lat = array("a", "b", "v", "g", "g", "d", "e", "e", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sh'", "y", "e", "yu", "ya", "'", "'", "i", "i", "e", "A", "B", "V", "G", "G", "D", "E", "E", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "CH", "SH", "SH'", "Y", "E", "YU", "YA", "'", "'", "I", "I", "E"); return preg_replace($rus, $lat, $string); } function slugify($text) { // replace non letter or digits by - $text = preg_replace('~[^\\pL\d]+~u', '-', $text); // trim $text = trim($text, '-'); // transliterate $text = translit($text); echo $text . "\n"; // lowercase $text = strtolower($text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) { return 'n-a'; } return $text; } echo slugify('Тестовый пример');
based on qTfgb
Output for 4.4.0 - 4.4.9, 5.0.5 - 7.1.0
Testovyj-primer testovyj-primer
Output for 4.3.11, 5.0.0 - 5.0.4
Warning: preg_replace(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in /in/ELZ6V on line 35 n-a
Output for 4.3.0 - 4.3.10
Warning: Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in /in/ELZ6V on line 35 n-a