Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> smile+bbkod, Задача замены BB-шного кода на HTML 
:(
    Опции темы
Voventus
Дата 31.1.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.12.2004
Где: г. Владивосток

Репутация: нет
Всего: нет



(Уж не знаю как правильно обозвать свою тему...) 

Задача: заменить в тексте BB-теги на их эквиваленты HTML, а также 
коды смайликов типа :smile: на картинку(конечно при выводе на экран)

Проблема(ы) заключается(ются) вот в чем:

при попытке вывода "что-то + что-то" и "что-то + чего-то" - вылазиет ошибка...
Ну я думаю, если прокомбинировать, то будет еще вариация ошибки =)...

Код прилагаю:


Код

<?php

print ("<script src = \"JavaScript.js\"></script>");
print ("<meta http-equiv = \"Content-Type\" content = \"text/html; charset = windows-1251\">");

list($msec, $sec) = explode(chr(32), microtime());
$HeadTime = $sec + $msec;

###########################################
########### Вывод смайликов =) ############
###########################################

$smile['images'] = array("smile.gif", "gigi.gif",  "lol.gif",  "spy.gif",   "bebe.gif",
                         "cool.gif",  "stop.gif",  "ass.gif",  "laugh.gif", "mad.gif",
                         "eek.gif",   "angry.gif", "down.gif", "smirk.gif", "wink.gif",
                         "kruto.gif");
$smile['codes']  = array(":smile:", ":gigi:",  ":lol:",  ":spy:",   ":bebe:",
                         ":cool:",  ":stop:",  ":ass:",  ":laugh:", ":mad:",
                         ":eek:",   ":angry:", ":down:", ":smirk:", ":wink:",
                         ":kruto:");

for ($i=0, $j=0;   $i<count($smile['images']), $j<count($smile['codes']);    $i++, $j++)
  {
    print ("<a href = \"JavaScript: SetSmile(' ".$smile['codes'][$j]." ')\">");
    print ("<img src = \"image/smile/".$smile['images'][$i]."\" border = \"0\"></a>");
  }

###########################################

print ("<br><br>");

#######################################
########### Вывод BB-тегов ############
#######################################

$BB['images']   = array("B.gif",  "I.gif",  "S.gif",          "U.gif");
$BB['alts']     = array("Жирный", "Курсив", "Перечеркнутый",  "Подчеркнутый");
$BB['onCodes']  = array("",    "[I]",    "[S]",            "[U]");
$BB['offCodes'] = array("
",   "[/I]",   "[/S]",           "[/U]");

$BB['onCodesHTML']  = array("<b>",  "<i>",  "<s>",  "<u>");
$BB['offCodesHTML'] = array("</b>", "</i>", "</s>", "</u>");

for ($i=0, $j=0, $m=0, $n=0;   $i<count($BB['images']),  $j<count($BB['alts']), $m<count($BB['onCodes']), $n<count($BB['offCodes']);    $i++, $j++, $m++, $n++)
  {
    print ("<a href = \"JavaScript: BB('".$BB['onCodes'][$m]."', '".$BB['offCodes'][$n]."')\">");
    print ("<img src = \"image/BB/".$BB['images'][$i]."\" alt = \"".$BB['alts'][$j]."\" border = \"0\"></a>");
  }

#######################################

print ("<br><br>");

print ("<form action = \"smile.php\" method = \"post\" name = \"form\">");
print ("<textarea name = \"msg\" rows = \"8\" cols = \"50\" wrap = \"virtual\"></textarea>");
print ("<p><input type = \"submit\" name = \"ok\" value = \"   OK   \">");
print ("<input type = \"reset\" value = \" Сброс \">");
print ("</form>");

if (isset($_POST['ok']))
  {
    $_POST['msg'] = trim($_POST['msg']);
    $_POST['msg'] = strip_tags($_POST['msg']);
    $_POST['msg'] = StripSlashes($_POST['msg']);
    $_POST['msg'] = HtmlSpecialChars($_POST['msg']);

    ///// STR_REPLACE() /////

    for ($i=0, $j=0;   $i<count($smile['images']), $j<count($smile['codes']);    $i++, $j++)

     $_POST['msg'] = str_replace($smile['codes'][$j], "<img src = \"image/smile/".$smile['images'][$i]."\" border = \"0\">",  $_POST['msg']);

    for ($i=0, $j=0;   $i<count($BB['onCodes']), $j<count($BB['onCodesHTML']);    $i++, $j++)

     $_POST['msg'] = str_replace($BB['onCodes'][$i], $BB['onCodesHTML'][$j], $_POST['msg']);

    for ($i=0, $j=0;   $i<count($BB['offCodes']), $j<count($BB['offCodesHTML']);    $i++, $j++)

     $_POST['msg'] = str_replace($BB['offCodes'][$i], $BB['offCodesHTML'][$j], $_POST['msg']);

     $_POST['msg'] = WordWrap($_POST['msg'], 75, "<br>");

    print ($_POST['msg']."<br>");
  }

list($msec, $sec) = explode(chr(32), microtime());
print("<br>[Generated ".round(($sec + $msec) - $HeadTime, 4)."s]");

?>



Код библиотеки "JavaScript.js":



Код

if (navigator.appName !== "Microsoft Internet Explorer")
  {
    alert("Ваш браузер не на движке Internet Explorer!\n " +
          "Поэтому возможно некорректное отображение страниц!!!");
  }

function SetSmile(smile)
  {
    document.form.msg.value += smile;
  }

function BB(tag1, tag2)
  {
    document.form.msg.value = tag1 + document.form.msg.value + tag2;
  }



ЗЫ Мне кажется ошибка при str_replace()...
или в JavaScript.js, вернее не ошибка а неграмотный кодинг(т.к. JavaScript занимаюсь всего три-четыре дня)...
Браузер: Avant Browser(IE 4.0)

Заранее огромное спасибо...








Это сообщение отредактировал(а) Voventus - 31.1.2007, 12:19

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  1.JPG 14,94 Kb
PM MAIL ICQ   Вверх
PARROT
Дата 31.1.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Voventus, эту тему надо было создавать в яваскрипт как минимум и как максимум прежде воспользоваться поиском, потому что решения были.

Добавлено @ 13:34 
http://forum.vingrad.ru/topic-60152.html


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 31.1.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



1) заменить в тексте BB-теги на их эквиваленты HTML
Код

     function ApplyFormatting($text, $nl2br = true) {

                return str_replace(
                        array('[i]', '[/i]', '', '', '[u]', '[/u]', '[quote]','[/quote]','[color=red]','[/color]','[color=blue]','[/color]','[color=green]','[/color]','[color=orange]','[/color]','[color=silver]','[/color]','[color=black]','[/color]','[color=yellow]','[/color]','[size=1]','[/size]','[size=2]','[/size]','[size=6]','[/size]','[size=8]','[/size]','[size=10]','[/size]','[font=arial]','[/font]','[font=courier]','[/font]','[font=impact]','[/font]','[font=tahoma]','[/font]','[font=times]','[/font]','[font=verdana]','[/font]','[justify]', '[/justify]',
                                '[center]',  '[/center]','[right]', '[/right]', '[left]', '[left]',),
                        array('<i>', '</i>', '<b>', '</b>', '<u>', '</u>','<div class=quote>','</div>','<font color=red>','</font>','<font color=blue>','</font>','<font color=green>','</font>','<font color=orange>','</font>','<font color=silver>','</font>','<font color=black>','</font>','<font color=yellow>','</font>','<font size=1>','</font>','<font size=2>','</font>','<font size=6>','</font>','<font size=8>','</font>','<font size=10>','</font>','<font face=arial>','</font>','<font face=courier>','</font>','<font face=impact>','</font>','<font face=tahoma>','</font>','<font face=times>','</font>','<font face=verdana>','</font>','<p align="justify" class="content">', '</p>',
                                 '<p align="center" class="content">', '</p>', '<p align="right" class="content">', '</p>',
                                 '<p align="left" class="content">', '</p>',), (($nl2br == true) ? nl2br($text) : $text)
                );

        }


} 

коды смайликов типа :smile: на картинку(конечно при выводе на экран)
Код

$mas_com[4]=ereg_replace("#([0-9]+)","<img src='smile/\\1.gif'>",$mas_com[4]);

см. прикрепленный файл в качестве примера:

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  comment.php 24,01 Kb


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Voventus
Дата 1.2.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.12.2004
Где: г. Владивосток

Репутация: нет
Всего: нет



Проблему решил...
Код

// $_POST['msg'] = WordWrap($_POST['msg'], 75, "<br>");


Просто я не предусмотрел то, что WordWrap() вставляет "<br>" в 
Код

<img src = "image.jpg" border = <br> "0">


Думаю WordWrap() здесь вообще лишне...


Код

if (isset($_POST['ok']))
  {
    $_POST['msg'] = trim($_POST['msg']);
    $_POST['msg'] = strip_tags($_POST['msg']);
    $_POST['msg'] = StripSlashes($_POST['msg']);
    $_POST['msg'] = HtmlSpecialChars($_POST['msg']);

    ///// STR_REPLACE() /////

    for ($i=0, $j=0;   $i<count($smile['images']), $j<count($smile['codes']);    $i++, $j++)

     $_POST['msg'] = str_replace($smile['codes'][$j], "<img src = \"image/smile/".$smile['images'][$i]."\" border = \"0\">",  $_POST['msg']);

    for ($i=0, $j=0;   $i<count($BB['onCodes']), $j<count($BB['onCodesHTML']);    $i++, $j++)

     $_POST['msg'] = str_replace($BB['onCodes'][$i], $BB['onCodesHTML'][$j], $_POST['msg']);

    for ($i=0, $j=0;   $i<count($BB['offCodes']), $j<count($BB['offCodesHTML']);    $i++, $j++)

     $_POST['msg'] = str_replace($BB['offCodes'][$i], $BB['offCodesHTML'][$j], $_POST['msg']);

     // ВОТ И ВСЕ  $_POST['msg'] = WordWrap($_POST['msg'], 75, "<br>");

    print ($_POST['msg']."<br>");
  }

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.