Для комментариев зарегистрироваться или войти
Либо используйте ваш Open_ID, например аккаунт гугл, яндекс или ЖЖ
 

28 июня 2010 :Лёгкое типографирование предлогов в PHP

Сегодня небольшая заметка. В русском языке, как вы знаете существуют предлоги, и по правилам русского языка, при написании они должны переносится на новую строку вместе с последующим словом. Это правило применимо и к веб. Особенно актуально оно для ссылок меню, которые часто оказывается некорректно оформлено веб-мастерами. Т.е. ошибки типографики в тексте страницы допустимы, но меню заметно всегда. Приведу пример:

Строки перенесены неверно:

  • Приборы для ПЦР в
    реальном времени
  • Оборудование для
    ПЦР-лабораторий
  • Наборы реагентов и
    тест-системы для
    ПЦР в реальном времени
  • Зонды для ПЦР в
    реальном времени
  • Реагенты для
    секвенирования и
    фрагментного анализа

Строки с предлогами перенесены верно:

  • Приборы для ПЦР
    в реальном времени
  • Оборудование
    для ПЦР-лабораторий
  • Наборы реагентов
    и тест-системы
    для ПЦР в реальном времени
  • Зонды для ПЦР
    в реальном времени
  • Реагенты
    для секвенирования
    и фрагментного анализа

Добиться такого эффекта легко, если заменить пробел после предлога на неразрывный -  
Это можно сделать если настроить следующую автозамену в php-скриптах вывода этого меню, например так:

$caption = str_replace(' в ',' в ',$caption);
  $caption = str_replace(' и ',' и ',$caption);
  $caption = str_replace(' для ',' для ',$caption);

На самом деле предлогов немного больше, поэтому чтобы заменить их все, я написала для вас следующую маленькую функцию:

function typo($str){      
    $predlogs=array('в', 'без','до','из','к','на','по','о','от','перед','при','через', 'с','у','и','нет','за','над','для', 'об', 'под', 'про');
    foreach($predlogs as $p){
        $str = str_replace(' '.$p.' ',' '.$p.' ',$str);
    }	
    return $str;
}

Приятной типографики вам =)

UPD: Спасибо Aikr в комментариях, за предложенный вариант с регулярными выражениями. Та же функция на них:

 

function typo($str){      
$pattern = '/\s+(в|без|до|из|к|на|по|о|от|перед|при|через|с|у|и|нет|за|над|для|об|под|про)\s+/';
return preg_replace($pattern, ' \1 ', $str);
}

я буду очень признательна если вы прокоментируете эту статью

Комментарии:


Чтобы оставить комментарий нужно зарегистрироваться или войти.
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Оставить комментарий как:
Гость:
Сообщение:
Подпишитесь на статьи через RSS

15 самых популярных статей: