[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP скрипт интернет витрины, нужна помошь!
Bl@ck
День добрый) Нужна помощь: Имеется маленький OpenSource скрипт, интернет витрины, на PHP, нужно добавить возможность авто-распознование BB кодов (HTML желательно тоже), и ссылок, я в PHP не очень(только начинаю учить), поэтому прошу помочь!
Скачать скрипт мона здесь (81,9 кб)

Мне посоветовали воспользовоться парсером
Цитата
UBB Parser
' eamBBParser is a UBB Parser (or BB-code parser), written in PHP. It provides
a class for transforming BB-code to HTML.'

http://ubb.eamelink.nl/ or http://sourceforge.net/project/showf...roup_id=141389


либо регулярными выражениями

Код
$var = str_replace("[b]","<strong>", $var);
$var = str_replace("[/b]","</strong>", $var);
$var = str_replace("[i]","<i>", $var);
$var = str_replace("[/i]","</i>", $var);
$var = str_replace("[u]","<u>", $var);
$var = str_replace("[/u]","</u>", $var);
$var = str_replace("[hr]","<hr noshade color=\"#999999\" size=\"1\">", $var);
$var = str_replace("[/hr]","", $var);
$var = str_replace("[li]","<li>", $var);
$var = str_replace("[/li]","</li>", $var);
$var = str_replace("[up]","<span class=up>",$var);
$var = str_replace("[/up]","</span>",$var);
$var = preg_replace("#\[align=(left|right)\](.*?)\[/align\]#si", "<div style=\"text-align:\\1\">\\2</div>", $var);  
$var = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si", "<a class=\"u\" target=\"_blank\" href=\"\\1\">\\2</a>", $var);  
$var = preg_replace("#\[url\](.*?)\[/url\]#si", "<a class=\"u\" target=\"_blank\" href=\"\\1\">\\1</a>", $var);  
$var = str_replace("[CENTER]","<center>",$var);
$var = str_replace("[/CENTER]","</center>",$var);
$var = str_replace("[color=red]","<font color=#B71E2D>",$var);
$var = str_replace("[COLOR=blue]","<font color=#336699>",$var);
$var = str_replace("[COLOR=orange]","<font color=#FF9900>",$var);
$var = str_replace("[COLOR=gray]","<font color=#999999>",$var);
$var = str_replace("[COLOR=green]","<font color=#006633>",$var);
$var = str_replace("[/color]","</font>",$var);


Но как это сделать до меня не доходит, может кто нить помочь?

Желательно внедрить данную возможность в этот скрипт (по слухам это не сложно) буду благодарен как я так и автор скрипта (у него на это сейчас времени нету angry.gif)

Заранее благодарю!



Спустя 14 часов, 29 минут, 45 секунд (5.10.2008 - 11:50) Bl@ck написал(а):
Млин, неужели никто не может этого сделать?

Спустя 38 минут, 12 секунд (5.10.2008 - 12:29) Ghost написал(а):
ну блин... а тебе не кажется что это несколько... приходить на форум, и просто грить - мне тут скрипт надо сделать, а я не могу - сделайте за меня..

у меня, например, нет ни малейшего желания работать за кого-то.

Спустя 1 час, 27 минут, 11 секунд (5.10.2008 - 13:56) twin написал(а):
Разбираться в чужих скриптах правда желания никакого.
Вот попробуйте этот скриптик:
Код
function tag(text1, text2){  
   if ((document.selection))
     {
       document.form.ИМЯ_ТЕКСТАРЕИ.focus();//Установка фокуса
       var ran = form.ИМЯ_ТЕКСТАРЕИ.createTextRange();
       var s=document.form.document.selection;//Делаем объект из выделенного текста
       var r = s.createRange();
    var len = r.text.length;//Считаем количество символов в выделенном тексте
   var sc=r;
       var scr=text1+sc.text+text2;//Оборачиваем выделенный текст ВВ тегами
      
       len =  len + 7;//Вычисляем разницу между выделенным текстом итекстом с тегами
      
document.form.ИМЯ_ТЕКСТАРЕИ.focus();

//Определяем браузер
       var m_Name = navigator.appName;
//Смещаем указатель на новую позицию      
if (m_Name.indexOf("Explorer") != -1) {
    r.moveStart("character",1)//Если "Explorer"alert(len)
}
           else{
            
        r.moveEnd("character", len)
    
        }    
  //Вставляем текст с ВВ тегами      
       document.form.document.selection.createRange().text = scr;

}
else if(document.forms['form'].elements['ИМЯ_ТЕКСТАРЕИ'].selectionStart != undefined) {
         var element    = document.forms['form'].elements['ИМЯ_ТЕКСТАРЕИ'];
         var str = element.value;
         var start = element.selectionStart;
         var length = element.selectionEnd - element.selectionStart;
         var rv=str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length)
        element.value = rv;
        r = s.createRange();

     }
  }
поставьте имя текстареи, в которую нужно вставлять ВВ. Там, где нужны кнопки, вставьте это:
Код
<img src=images/italic.gif style='cursor:pointer' onClick="java script:tag('[i]', '[/i]'); return false;/>
<img src=images/under.gif style='cursor:pointer' onClick="java script:tag('[u]', '[/u]'); return false;"/>
<img src=images/strike.gif style='cursor:pointer' onClick="java script:tag('[s]', '[/s]'); return false;"/>
<img src=images/bold.gif style='cursor:pointer;' onClick="java script:tag('[b]', '[/b]'); return false;"/>
и так далее

сверху ваших "регулярок" напишите

Код
function bb_replace($var)
{

а снизу:

Код
return $var;
}


теперь останется обработать этой функцией выводимый текст, и вуаля.
Что не получится, пишите.

Спустя 28 минут, 53 секунды (5.10.2008 - 14:25) Bl@ck написал(а):
Спс! Щас буду пробовать!

Спустя 23 минуты, 3 секунды (5.10.2008 - 14:48) Bl@ck написал(а):
Код
###############    БЛОК ДОБАВЛЕНИЯ ТОВАРОВ    ###############    
function bb_replace($var)
{
$var = str_replace("[b]","<strong>", $var);
$var = str_replace("[/b]","</strong>", $var);
$var = str_replace("[i]","<i>", $var);
$var = str_replace("[/i]","</i>", $var);
$var = str_replace("[u]","<u>", $var);
$var = str_replace("[/u]","</u>", $var);
$var = str_replace("[hr]","<hr noshade color=\"#999999\" size=\"1\">", $var);
$var = str_replace("[/hr]","", $var);
$var = str_replace("[li]","<li>", $var);
$var = str_replace("[/li]","</li>", $var);
$var = str_replace("[up]","<span class=up>",$var);
$var = str_replace("[/up]","</span>",$var);
$var = preg_replace("#\[align=(left|right)\](.*?)\[/align\]#si", "<div style=\"text-align:\\1\">\\2</div>", $var);  
$var = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si", "<a class=\"u\" target=\"_blank\" href=\"\\1\">\\2</a>", $var);  
$var = preg_replace("#\[url\](.*?)\[/url\]#si", "<a class=\"u\" target=\"_blank\" href=\"\\1\">\\1</a>", $var);  
$var = str_replace("[CENTER]","<center>",$var);
$var = str_replace("[/CENTER]","</center>",$var);
$var = str_replace("[color=red]","<font color=#B71E2D>",$var);
$var = str_replace("[COLOR=blue]","<font color=#336699>",$var);
$var = str_replace("[COLOR=orange]","<font color=#FF9900>",$var);
$var = str_replace("[COLOR=gray]","<font color=#999999>",$var);
$var = str_replace("[COLOR=green]","<font color=#006633>",$var);
$var = str_replace("[/color]","</font>",$var);
return $var;
}
function tag(text1, text2){  
   if ((document.selection))
     {
       document.form.description.focus();//Установка фокуса
       var ran = form.description.createTextRange();
       var s=document.form.document.selection;//Делаем объект из выделенного текста
       var r = s.createRange();
    var len = r.text.length;//Считаем количество символов в выделенном тексте
   var sc=r;
       var scr=text1+sc.text+text2;//Оборачиваем выделенный текст ВВ тегами
      
       len =  len + 7;//Вычисляем разницу между выделенным текстом итекстом с тегами
      
document.form.description.focus();

//Определяем браузер
       var m_Name = navigator.appName;
//Смещаем указатель на новую позицию      
if (m_Name.indexOf("Explorer") != -1) {
    r.moveStart("character",1)//Если "Explorer"alert(len)
}
           else{
            
        r.moveEnd("character", len)
    
        }    
  //Вставляем текст с ВВ тегами      
       document.form.document.selection.createRange().text = scr;

}
else if(document.forms['form'].elements['description'].selectionStart != undefined) {
         var element    = document.forms['form'].elements['description'];
         var str = element.value;
         var start = element.selectionStart;
         var length = element.selectionEnd - element.selectionStart;
         var rv=str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length)
        element.value = rv;
        r = s.createRange();

     }
  }  

elseif (@$_GET['op'] == "add_item")
{
    if (@$_POST['title']) // если POST массив не пуст
    {
        // преобразовываем зарезервированные в HTML символы
        // и устанавливаем тип переменных в числа
        $id_category = intval            ($_POST['id_category']);
        $price         = intval            ($_POST['price']);
        $title         = htmlspecialchars    ($_POST['title']);
        $description = htmlspecialchars    ($_POST['description']);

        // Проверим наличие стоимости
        if (!$price) die ("<br /><br /><center><strong>
        Введите нормальную стоимость, без точек и запятых!</strong></center>");

        // экранируем
        if (!get_magic_quotes_gpc())
        {
             $title = mysql_escape_string($title);
             $description = mysql_escape_string($description);
        }
        else
        {
            $title = str_replace("'","`",$title);
            $description = str_replace("'","`",$description);
        }

        // вставляем данные в БД
        $query = mysql_query("
        INSERT jic_item  
        SET id_category = '$id_category',
        title = '$title',
        description = '$description',
        price = '$price',
        money_type = '".$_POST['money_type']."',
        print_to_index = '".$_POST['print_to_index']."'
        ");
        // если удачно, то...
        if($query) echo "<br /><br /><center><strong>Товар добавлен</strong></center>";
        // если не удачно, то
        else echo "<br /><br /><center><strong>Ошибка при добавлении товара</strong></center>";
    }
    // иначе выводим форму для заполнения
    else
    {
        echo "<table align=center cellspacing=2 cellpadding=2 border=0>
        <tr><td align=right><br /><FORM METHOD=POST
         ACTION=\"http://".$_SERVER['HTTP_HOST']."/".$dir."admin/cat/add_item/\">
        Название: <input type=text size=60 maxlength=250 name=title><br /><br />
        Описание: <textarea rows=6 cols=60 name=description></textarea><br /><br />
        Выберите категорию: <select name=id_category>";
        // ф-ия обхода дерева категорий
        function subcategory_it($id, $sub)
        {
            $categories = mysql_query("SELECT * FROM jic_category WHERE root_cat = $id ORDER by name_cat ASC");
            while($category = mysql_fetch_array($categories))
            {    
                echo "<option value=\"".$category['cat_id']."\">";
                for($i = 0; $i < $sub; $i++) echo "&nbsp;&nbsp;&nbsp;&nbsp;";
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$category['name_cat']." ";
                subcategory_it($category['cat_id'], $sub+1);
            }
        }
        $categories = mysql_query("SELECT * FROM jic_category WHERE root_cat = 0 ORDER by name_cat ASC");
        while($category = mysql_fetch_array($categories))
        {
            $sub = 1;
            echo "<optgroup label=\"".$category['name_cat']."\">";
            subcategory_it($category['cat_id'], $sub);
        }
        echo "</select><br /><br />
        Стоимость: <input type=text size=60 maxlength=9 name=price><br /><br />
        Вид валюты: <select name=money_type>
        <option value=\"R\" selected>Рубли</option>
        <option value=\"D\">Доллары США</option>
        <option value=\"E\">Евро</option>
        <option value=\"G\">Гривны</option>
        </select><br /><br />
        Показывать на главной странице? <select name=print_to_index>
        <option value=\"yes\" selected>Да, показывать</option>
        <option value=\"no\">Нет</option>
        </select><br /><br />
        <input type=submit value=Добавить наименование товара>
        </form></td></tr></table>";
    }
}
    ###############    КОНЕЦ БЛОКА ДОБАВЛЕНИЯ ТОВАРОВ    ###############


Пытаюсь проверить (кнопок не вставляю еще) выдает пустую страницу при попытке добавления товара, либо категории, мне кажется что чего-то нехватает в БД

Спустя 1 час, 7 минут, 34 секунды (5.10.2008 - 15:55) twin написал(а):
Не-не-не-не-не!!!!
Это разные скрипты.
Первый - это JS, кнопки нужно в HTML, а Ваши регуляркии отдельным файлом (php) лучше и инклюдить к странице(ам), где вывод.

Найдите файл, где форма редактирования и в студию, я подскажу куда и как.

Спустя 2 часа, 33 минуты, 50 секунд (5.10.2008 - 18:29) Bl@ck написал(а):
Всем спасибо! Тему можно закрыть, разобрался!


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.