ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Pубрика "Полезные решения на PHP"
  #1  
Старый 02.05.2006, 22:29
Utochka
Постоянный
Регистрация: 21.12.2005
Сообщений: 620
С нами: 10729766

Репутация: 268


По умолчанию Pубрика "Полезные решения на PHP"

Предлогаю выкладывать сюда полезные решения на php, помоему будет прикольно, перед тем как создать тему человек идет сюды и смотрит есть ли тут готовый пример ну или идет в гугл )

Вот от меня преобразование BB-тегов в соответствующие HTML-теги.

PHP код:
<?php
function bth($content) {

// Переносы строк
$content = nl2br($content);

// Горизонтальная линия
$content = str_replace("[HR]", "<hr />", $content);

// Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый
$content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content);
$content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content);
$content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content);
$content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content);

// Нижний и верхний регистр
$content = preg_replace("/\[SUB\](.+?)\[\/SUB\]/", "<sub>\\1</sub>", $content);
$content = preg_replace("/\[SUP\](.+?)\[\/SUP\]/", "<sup>\\1</sup>", $content);

// Мелкий шрифт
$content = preg_replace("/\[SMALL\](.+?)\[\/SMALL\]/", "<small>\\1</small>", $content);

// Нестандартный шрифт
$content = preg_replace("/\[FONT=(.+?)\](.+?)\[\/FONT\]/", "<font face=\"\\1\">\\2</font>", $content);

// Название шрифта
$content = preg_replace("/\[SIZE=(.+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content);

// Цвет шрифта
$content = preg_replace("/\[COLOR=(.+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content);

// Выравнивание (По левому краю, По центру, По правому краю)
$content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content);
$content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content);
$content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content);

// Ссылки
$content = preg_replace("/\[URL\](.+?)\[\/URL\]/", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $content);
$content = preg_replace("/\[URL=(.+?)\](.+?)\[\/URL\]/", "<a href=\"\\1\" target=\"_blank\">\\2</a>", $content);

// E-Mail
$content = preg_replace("/\[EMAIL\](.+?)\[\/EMAIL\]/", "<a href=\"mailto:\\1\">\\1</a>", $content);
$content = preg_replace("/\[EMAIL=(.+?)\](.+?)\[\/EMAIL\]/", "<a href=\"mailto:\\1\">\\2</a>", $content);

// Изображение
$content = preg_replace("/\[IMG\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\" alt=\"\">", $content);
$content = preg_replace("/\[IMG=(.+?)\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\" alt=\"\\2\">", $content);

// Список
$content = preg_replace("/\[LIST\](.+?)\[\/LIST\]/", "<ul type=\"square\">\\1</ul>", $content);
$content = preg_replace("/\[LIST=(.+?)\](.+?)\[\/LIST\]/", "<ul type=\"\\1\">\\2</ul>", $content);
$content = preg_replace("/\[\*\](.+?)\[\/\*\]/", "<li>\\1</li>", $content);

// Цитата
$content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content);

// Смайлики
$content = preg_replace("/:(.+?):/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);

return 
$content;

}

// Тест функции
$text = "[HR]Жирный";
$text = bth($text);
echo 
$text;
?>
 
Ответить с цитированием

  #2  
Старый 02.05.2006, 23:20
pch
Познающий
Регистрация: 22.10.2005
Сообщений: 37
С нами: 10816148

Репутация: 141
По умолчанию

Цитата:
$content = preg_replace("/\[FONT=(.+?)\](.+?)\[\/FONT\]/", "<font face=\"\\1\">\\2</font>", $content);
ЧТО??? ИМХО даже в phpbb 1.0 не было такой защиты... Чуть поправил (правил на ходу, поэтому могут быть всякие parse-ошибки...)
PHP код:
<?php
function bth($content) {

// Переносы строк
$content = nl2br($content);

// Горизонтальная линия
$content = str_replace("[HR]", "<hr />", $content);

// Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый
$content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content);
$content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content);
$content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content);
$content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content);

// Нижний и верхний регистр
$content = preg_replace("/\[SUB\](.+?)\[\/SUB\]/", "<sub>\\1</sub>", $content);
$content = preg_replace("/\[SUP\](.+?)\[\/SUP\]/", "<sup>\\1</sup>", $content);

// Мелкий шрифт
$content = preg_replace("/\[SMALL\](.+?)\[\/SMALL\]/", "<small>\\1</small>", $content);

// Нестандартный шрифт
$content = preg_replace("/\[FONT=([^\"]+?)\](.+?)\[\/FONT\]/", "<font face=\"\\1\">\\2</font>", $content);

// Название шрифта
$content = preg_replace("/\[SIZE=(\d+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content);

// Цвет шрифта
$content = preg_replace("/\[COLOR=([^\"]+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content);

// Выравнивание (По левому краю, По центру, По правому краю)
$content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content);
$content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content);
$content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content);

// Ссылки
$content = preg_replace("/\[URL\]([a-z]+?)(:\/\/)([^\"]+?)\[\/URL\]/", "<a href=\"\\1\\2\\3\" target=\"_blank\">\\1</a>", $content);
$content = preg_replace("/\[URL=([a-z]+?)(:\/\/)[^\"]+?)\](.+?)\[\/URL\]/", "<a href=\"\\1\\2\\3\" target=\"_blank\">\\2</a>", $content);

$content = preg_replace("/\[URL\]([^\"]+?)\[\/URL\]/", "<a href=\"http:\/\/\\1\" target=\"_blank\">\\1</a>", $content);
$content = preg_replace("/\[URL=([^\"]+?)\](.+?)\[\/URL\]/", "<a href=\"http:\/\/\\1\" target=\"_blank\">\\2</a>", $content);


// E-Mail
$content = preg_replace("/\[EMAIL\]([^\"]+?)\[\/EMAIL\]/", "<a href=\"mailto:\\1\">\\1</a>", $content);
$content = preg_replace("/\[EMAIL=([^\"]+?)\](.+?)\[\/EMAIL\]/", "<a href=\"mailto:\\1\">\\2</a>", $content);

// Изображение
$content = preg_replace("/\[IMG\](http:\/\/)([^\"]+?)\[\/IMG\]/", "<img src=\"\\1\\2\" border=\"0\" alt=\"\">", $content);
$content = preg_replace("/\[IMG=(http:\/\/)([^\"]+?)\](.+?)\[\/IMG\]/", "<img src=\"\\1\\2\" border=\"0\" alt=\"\\2\">", $content);

$content = preg_replace("/\[IMG\]([^\"]+?)\[\/IMG\]/", "<img src=\"http:\/\/\\1\" border=\"0\" alt=\"\">", $content);
$content = preg_replace("/\[IMG=([^\"]+?)\](.+?)\[\/IMG\]/", "<img src=\"http:\/\/\\1\" border=\"0\" alt=\"\\2\">", $content);

// Список
$content = preg_replace("/\[LIST\]([^\"]+?)\[\/LIST\]/", "<ul type=\"square\">\\1</ul>", $content);
$content = preg_replace("/\[LIST=([^\"]+?)\](.+?)\[\/LIST\]/", "<ul type=\"\\1\">\\2</ul>", $content);
$content = preg_replace("/\[\*\](.+?)\[\/\*\]/", "<li>\\1</li>", $content);

// Цитата
$content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content);

// Смайлики
$content = preg_replace("/:(.+?):/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);

return 
$content;

}

Последний раз редактировалось pch; 02.05.2006 в 23:26..
 
Ответить с цитированием

  #3  
Старый 02.05.2006, 23:41
NaX[no]rT
Members of Antichat
Регистрация: 03.09.2005
Сообщений: 594
С нами: 10886786

Репутация: 685


По умолчанию

да глупая затея, есть уйма ресурсов где можно найти нужные тебе скрипты. Их там тысячи, просто внимательнее глянуть нужно.
 
Ответить с цитированием

  #4  
Старый 02.05.2006, 23:49
k1b0rg
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
С нами: 10937126

Репутация: 1316


По умолчанию

кошмарный коды, что у первого что у второго.
Забыли про `
это фуфло. А вот что забыли про то что бб теги можно поставить внутрь друг друга.
И все ваши фильтры быстренько наепнуться.
 
Ответить с цитированием

  #5  
Старый 02.05.2006, 23:57
pch
Познающий
Регистрация: 22.10.2005
Сообщений: 37
С нами: 10816148

Репутация: 141
По умолчанию

2 k1b0rg
я и не претендовал на bulletproof код! Я лишь хотел указать автору на ПОЛНОЕ отсутствие фильтрации! На то, чтобы превратить этот код во что-то, мне надо ещё минут 10, но надо ли это, учитывая, что кода, выполняющего данную конкретную функцию дофига и больше - НЕТ!

Последний раз редактировалось pch; 03.05.2006 в 00:00..
 
Ответить с цитированием

  #6  
Старый 03.05.2006, 00:03
pch
Познающий
Регистрация: 22.10.2005
Сообщений: 37
С нами: 10816148

Репутация: 141
По умолчанию

А про обратный апостраф я что-то не врубил - зафиг его фильтровать, если кавычки и спаренные не пройдут и в тэг не выйдешь?
 
Ответить с цитированием

  #7  
Старый 03.05.2006, 00:12
vectorg
Постоянный
Регистрация: 07.08.2005
Сообщений: 386
С нами: 10925666

Репутация: 454
По умолчанию

ппц, тема сплошной лол
Всё это отговорки... Признайте свои ошибки, и старайтесь не делать их в будущем!
 
Ответить с цитированием

  #8  
Старый 03.05.2006, 01:33
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
С нами: 11291306

Репутация: 569


По умолчанию

Я делаю preg_match_all на бб код и уже работаю\обрабатываю вытащенные переменные. Очень удобно.
 
Ответить с цитированием

  #9  
Старый 04.05.2006, 18:05
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
С нами: 10537698

Репутация: 116
По умолчанию

NeX, нафига выложил мой дырявый сркипт бб-кодов )) Я даже знаю где ты его взял - http://slaed.net/index.php?name=Foru...ewtopic&t=3365 .

Кстати, кто интересуется полезными решениямы, читает по ссылке выше. Там я выкладывал, некоторые даже довольно-таки неплохие решения. Но опыта меньше было - посему дырявее
 
Ответить с цитированием

  #10  
Старый 05.05.2006, 19:58
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами: 10562786

Репутация: 537


По умолчанию

меня всегда мучал один вопрос - почему многие кодеры пишут:
PHP код:
"<img src=\"/images/smiles/\\1.gif\" border=\"0\">" 
когда с одинарными кавычками код более удобно читать?
PHP код:
"<img src='/images/smiles/\\1.gif' border='0'>" 
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.