Как заменить "простые" кавычки в тексте на «ёлочки»?
На просторах сети была найдена простая и в то же время мощная функция:
function typograph($text) {
$text = html_entity_decode($text, ENT_QUOTES, 'utf-8');
$arr = array(
// Убираем символ троеточия
'/…/u' => '...',
// Кавычки «ёлочки» « »
'/(^|[\s;\(\[-])"/' => '$1«',
'/"([\s-\.!,:;\?\)\]\n\r]|$)/' => '»$1',
'/([^\s])"([^\s])/' => '$1»$2',
// Длинное тире —
'/(^|\n|["„«])--?(\s)/u' => '$1—$2',
'/(\s)--?(\s)/' => ' —$2',
// Непереносимый проблел после коротких слов
'/([\s][a-zа-яё]{1,2})[ ]/iu' => '$1 '
);
foreach ($arr as $key=>$val) {
$text = preg_replace($key, $val, $text);
}
// Вложенные кавычки „ “
while (preg_match('/(«[^«»]*)«/mu', $text)) {
$text = preg_replace('/(«[^«»]*)«/mu', '$1„', $text);
$text = preg_replace('/(„[^„“«»]*)»/mu', '$1“', $text);
}
return $text;
}