<?php echo $category['name']; ?>
, которая выводит "Я в будке"./**
* Функиция транслитерации
* @param string
* @return string
*/
public function translit($st)
{
$st = mb_strtolower($st, "utf-8");
$st = str_replace([
'?', '!', '.', ',', ':', ';', '*', '(', ')', '{', '}', '[', ']', '%', '#', '№', '@', '$', '^', '-', '+', '/', '\\', '=', '|', '"', '\'',
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'з', 'и', 'й', 'к',
'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х',
'ъ', 'ы', 'э', ' ', 'ж', 'ц', 'ч', 'ш', 'щ', 'ь', 'ю', 'я'
], [
'_', '_', '.', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_',
'a', 'b', 'v', 'g', 'd', 'e', 'e', 'z', 'i', 'y', 'k',
'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h',
'j', 'i', 'e', '_', 'zh', 'ts', 'ch', 'sh', 'shch',
'', 'yu', 'ya'
], $st);
$st = preg_replace("/[^a-z0-9_.]/", "", $st);
$st = trim($st, '_');
$prev_st = '';
do {
$prev_st = $st;
$st = preg_replace("/_[a-z0-9]_/", "_", $st);
} while ($st != $prev_st);
$st = preg_replace("/_{2,}/", "_", $st);
return $st;
}
sanitize_title()
; Но некоторые спецсимволы будут конвертированы в юникод-формат вида %2С и т.д. Лучше всего декодировать их с помощью urldecode()
и удалить из строки все символы за исключением латинских букв, цифр, дефиса и нижнего подчеркивания$post_slug = urldecode( sanitize_title($post_title) );
$post_slug = preg_replace('/([^a-z\d\-\_])/', '', $post_slug);
function slugify($string) {
$string = iconv("UTF-8", "ASCII//TRANSLIT//IGNORE",transliterator_transliterate("Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();", $string));//iconv нужен для ьъ
$string = str_replace("?", "", $string);
$string = preg_replace('/[-\s]+/', '-', $string);
return trim($string, '-');
}
echo slugify("Я люблю PHP!");//a-lublu-php
echo PHP_EOL;
echo slugify("Съешь же ещё этих мягких французских булок, да выпей чаю");//ses-ze-ese-etih-magkih-francuzskih-bulok-da-vypej-cau