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

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

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

 

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

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

тема: Функция Транслита для BB кодов. Нужна ваша помощь!
 
 автор: Stasila   (31.12.2009 в 10:14)   письмо автору
 
 

Как сделать транслит чтоб он не переводил в тексте BB тэги?

Просто мне это необходимо чтоб текст сохранял форматирование... В моем распоряжение есть такая функция, но она возвращает пустоту, думаю из-за preg_replace функции. Помогите пожалуйста


[PHP]function latrus($string) /* Функция транслита */
{
$arr1 = array("zh","Zh","ZH","yo","Yu","shc","Shc","SHC","yu","sh",
"ye","ya","Sh","SH","ch","Ch","CH","Yo","YO","Ya","YA",
"Ye","YE","i","'","c","u","k","e","n","g","z","h","''",
"f","x","v","a","p","w","j","y","r","o","l","d","s","m",
"t","b","Y","C","U","K","J","E","N","G","Z","H","F","X",
"V","A","P","R","O","L","D","S","M","I","T","B","W");
$arr2 = array("ж","Ж","Ж","ё","Ю","щ","Щ","Щ","ю","ш","э","я","Ш",
"Ш","ч","Ч","Ч","Ё","Ё","Я","Я","Э","Э","и","ь","ц",
"у","к","е","н","г","з","х","ъ","ф","ы","в","а","п",
"в","й","ы","р","о","л","д","с","м","т","б","Ы","Ц",
"У","К","Й","Е","Н","Г","З","Х","Ф","Ы","В","А","П",
"Р","О","Л","Д","С","М","И","Т","Б","В");
$string = str_replace($arr1,$arr2,$string);

/* Anti Translit BB: spacing bb code words */

$arr3 = array("#\[[\s]*урл[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/урл[\s]*\]#i","#\[урл\](.+)\[/урл\]#isU","#\[имг\](.+)\[/имг\]#isU","#\[б\](.+)\[\/б\]#isU","#\[и\](.+)\[\/и\]#isU","#\[ем\](.+)\[\/ем\]#isU","#\[биг\](.+)\[\/биг\]#isU","#\[смалл\](.+)\[\/смалл\]#isU","#\[у\](.+)\[\/у\]#isU","#\[цоде\](.+)\[\/цоде\]#isU","#\[qуоте\](.+)\[\/qуоте\]#isU","#\[ред\](.+)\[\/ред\]#isU","#\[блуе\](.+)\[\/блуе\]#isU","#\[эллов\](.+)\[\/эллов\]#isU","#\[аqуа\](.+)\[\/аqуа\]#isU","#\[греен\](.+)\[\/греен\]#isU","#\[вхите\](.+)\[\/вхите\]#isU","#\[пйтхон\](.+)\[\/пйтхон\]#isU","#\[хтмл\](.+)\[\/хтмл\]#isU","#\[апаче\](.+)\[\/апаче\]#isU","#\[цпп](.+)\[\/цпп]#isU","#\[цс](.+)\[\/цс\]#isU","#\[цсс\](.+)\[\/цсс\]#isU","#\[делпхи\](.+)\[\/делпхи\]#isU","#\[йава\](.+)\[\/йава\]#isU","#\[йавасцрипт\](.+)\[\/йавасцрипт\]#isU","#\[перл\](.+)\[\/перл\]#isU","#\[пхп\](.+)\[\/пхп\]#isU","#\[сqл\](.+)\[\/сqл\]#isU","#\[вбсцрипт\](.+)\[\/вбсцрипт\]#isU","#\[х1\](.+)\[\/х1\]#isU","#\[х2\](.+)\[\/х2\]#isU","#\[х3\](.+)\[\/х3\]#isU","#\[цолор=([^\]]+){3,25}\](.+?)\[/цолор\]#isU","#\[цопй\]","#\[траде\]#isU","#\[цент\]#isU","#\[суп\](.+)\[\/суп\]#isU","#\[суб\](.+)\[\/суб\]#isU","#\[тхеме\](\d+)\[\/тхеме\]#isU","#\[хиде\](.+)\[\/хиде\]#isU");
$arr4 = array("#\[[\s]*url[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/url[\s]*\]#isU","#\[url\](.+)\[/url\]#isU","#\[img\](.+)\[/img\]#isU","#\[b\](.+)\[\/b\]#isU","#\[i\](.+)\[\/i\]#isU","#\[em\](.+)\[\/em\]#isU","#\[big\](.+)\[\/big\]#isU","#\[small\](.+)\[\/small\]#isU","#\[u\](.+)\[\/u\]#isU","#\[code\](.+)\[\/code\]#isU","#\[quote\](.+)\[\/quote\]#isU","#\[red\](.+)\[\/red\]#isU","#\[blue\](.+)\[\/blue\]#isU","#\[yellow\](.+)\[\/yellow\]#isU","#\[aqua\](.+)\[\/aqua\]#isU","#\[green\](.+)\[\/green\]#isU","#\[silver\](.+)\[\/silver\]#isU","#\[white\](.+)\[\/white\]#isU","#\[python\](.+)\[\/python\]#isU","#\[html\](.+)\[\/html\]#isU","#\[apache\](.+)\[\/apache\]#isU","#\[cpp](.+)\[\/cpp]#isU","#\[cs](.+)\[\/cs\]#isU","#\[css\](.+)\[\/css\]#isU","#\[delphi\](.+)\[\/delphi\]#isU","#\[java\](.+)\[\/java\]#isU","#\[javascript\](.+)\[\/javascript\]#isU","#\[perl\](.+)\[\/perl\]#isU","#\[php\](.+)\[\/php\]#isU","#\[sql\](.+)\[\/sql\]#isU","#\[vbscript\](.+)\[\/vbscript\]#isU","#\[h1\](.+)\[\/h1\]#isU","#\[h2\](.+)\[\/h2\]#isU","#\[h3\](.+)\[\/h3\]#isU","#\[color=([^\]]+){3,25}\](.+?)\[/color\]#isU","#\[copy\]#isU","#\[trade\]#isU","#\[cent\]#isU","#\[sup\](.+)\[\/sup\]#isU","#\[sub\](.+)\[\/sub\]#isU","#\[theme\](\d+)\[\/theme\]#isU","#\[hide\](.+)\[\/hide\]#isU");
$string = preg_replace($arr3,$arr4,$string);
return $string;
}[/PHP]

И кстатии с Наступающим Вас! ;)

  Ответить  
 
 автор: Fractured#   (31.12.2009 в 12:24)   письмо автору
 
   для: Stasila   (31.12.2009 в 10:14)
 

<?php
$s 
preg_split('/(\\[.*?\\])/'$s, -1PREG_SPLIT_DELIM_CAPTURE);

for(
$i 0$i count($s); $i++)
{
    if( 
$i )
    {
        
# BB-тег
    
}
    else
    {
        
# Текст
    
}
}

$s implode($s);

?>

[поправлено модератором]

  Ответить  
 
 автор: Stasila   (31.12.2009 в 13:05)   письмо автору
 
   для: Fractured#   (31.12.2009 в 12:24)
 

А можете пример дать с переводом одного тега хотя бы

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

  Ответить  
 
 автор: Fractured#   (31.12.2009 в 13:14)   письмо автору
 
   для: Stasila   (31.12.2009 в 13:05)
 

Ну там где текст — делай транслитерацию, там где BB-тег — ничего не делай. Хотя способ с рег. выражениями вообще туповатый.

  Ответить  
 
 автор: Stasila   (31.12.2009 в 13:16)   письмо автору
 
   для: Fractured#   (31.12.2009 в 13:14)
 

Те так?

<?php
$s 
preg_split('/(\\[.*?\\])/'$s, -1PREG_SPLIT_DELIM_CAPTURE);

for(
$i 0$i count($s); $i++)
{
    if( 
$i )
    {
        
# BB-тег
    
}
    else
    {
       
$arr1 = array("zh","Zh","ZH","yo","Yu","shc","Shc","SHC","yu","sh",
"ye","ya","Sh","SH","ch","Ch","CH","Yo","YO","Ya","YA",
"Ye","YE","i","'","c","u","k","e","n","g","z","h","''",
"f","x","v","a","p","w","j","y","r","o","l","d","s","m",
"t","b","Y","C","U","K","J","E","N","G","Z","H","F","X",
"V","A","P","R","O","L","D","S","M","I","T","B","W");
      
$arr2 = array("ж","Ж","Ж","ё","Ю","щ","Щ","Щ","ю","ш","э","я","Ш",
"Ш","ч","Ч","Ч","Ё","Ё","Я","Я","Э","Э","и","ь","ц",
"у","к","е","н","г","з","х","ъ","ф","ы","в","а","п",
"в","й","ы","р","о","л","д","с","м","т","б","Ы","Ц",
"У","К","Й","Е","Н","Г","З","Х","Ф","Ы","В","А","П",
"Р","О","Л","Д","С","М","И","Т","Б","В");
      
$s str_replace($arr1,$arr2,$s);
    }
}

$s implode($s);

?> 

  Ответить  
 
 автор: Fractured#   (31.12.2009 в 13:19)   письмо автору
 
   для: Stasila   (31.12.2009 в 13:16)
 

Нет, нужно с $s[$i] работать в цикле, а не с $s. И зачем каждый раз переопределять массивы $arr1, $arr2? Да и вообще, лучше юзать strtr(), потому как если будет UTF-8, то начнутся проблемы.

[поправлено модератором]

  Ответить  
 
 автор: Stasila   (31.12.2009 в 13:30)   письмо автору
 
   для: Fractured#   (31.12.2009 в 13:19)
 

Блин.... Напиши пример полнастью пожалуйста, не могу сообразить

  Ответить  
Rambler's Top100
вверх

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