Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Транслит (lat>ru) с учетом тегов
 
 автор: betatester   (10.07.2007 в 17:54)   письмо автору
 
 

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

   
 
 автор: BetaTester   (10.07.2007 в 19:32)   письмо автору
 
   для: betatester   (10.07.2007 в 17:54)
 

Все. Вот, может кому пригодится:
function translit($text)
 {
  $mass_en=array(
    "SCH", "Sch", "YO", "Yo", "ZH", "Zh",
    "CH", "Ch", "SH", "Sh", "YE", "Ye",
    "YU", "Yu", "YA", "Ya", "sch", "yo",
    "zh", "ch", "sh", "ye", "yu", "ya",
    "A", "B", "V", "G", "D", "E",
    "Z", "I", "J", "K","L", "M",
    "N", "O", "P", "R", "S", "T",
    "U", "F", "H", "C", "Y", "a",
    "b", "v", "g", "d", "e", "z",
    "i", "j", "k", "l", "m", "n",
    "o", "p", "r", "s", "t", "u",
    "f", "h", "c", '"', "y", "'"
    );
  $mass_ru=array(
    "Щ", "Щ", "Ё", "Ё", "Ж", "Ж",
    "Ч", "Ч", "Ш", "Ш", "Э", "Э",
    "Ю", "Ю", "Я", "Я", "щ", "ё",
    "ж", "ч", "ш", "э", "ю", "я",
    "А", "Б", "В", "Г", "Д", "Е",
    "З", "И", "Й", "К", "Л", "М",
    "Н", "О", "П", "Р", "С", "Т",
    "У", "Ф", "Х", "Ц", "Ы", "а",
    "б", "в", "г", "д", "е", "з",
    "и", "й", "к", "л", "м", "н",
    "о", "п", "р", "с", "т", "у",
    "ф", "х", "ц", "ъ", "ы", "ь"
    );
//исходная длина
$source_len=strlen($text);
while(strlen($text)!=0)
 {
  $position_1=strpos($text, "<");
  if(empty($position_1))
   {
    //теги не найдены. транслитерируем текст из латиницы в кирилицу
    $new_string.=str_replace($mass_en, $mass_ru, $text);
    $text=substr_replace($text, "", 0, strlen($text));
    break;
   }
  else
   {
    #теги найдены. обрабатываем
    #открывающая скобка
    //выбираем подстроку
    $sub_string=substr($text, 0, $position_1+1);
    //записываем ее в новую строку
    $new_string.=str_replace($mass_en, $mass_ru, $sub_string);
    //удаляем выбранную подстроку из исходной строки
    $text=substr_replace($text, "", 0, $position_1+1);

    #закрывающая скобка>
    $position_2=strpos($text, ">");
    //выбираем подстроку
    $sub_string=substr($text, 0, $position_2+1);
    //записываем ее в новую строку
    $new_string.=$sub_string;
    //удаляем выбранную подстроку из исходной строки
    $text=substr_replace($text, "", 0, $position_2+1);
   }
 }
  $text=$new_string;
  return $text;
 }


Не забудьте обработать текст функцией htmlspecialchars().
P.S.: перенесите тему в форум PHP. Я написал это здесь, потому что думал это лучше делать на регулярных выражениях.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования