Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Pубрика "Полезные решения на PHP" (https://forum.antichat.xyz/showthread.php?t=18527)

Utochka 02.05.2006 22:29

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;
?>


pch 02.05.2006 23:20

Цитата:

$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;

}


NaX[no]rT 02.05.2006 23:41

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

k1b0rg 02.05.2006 23:49

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

pch 02.05.2006 23:57

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

pch 03.05.2006 00:03

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

vectorg 03.05.2006 00:12

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

Trinux 03.05.2006 01:33

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

Developer 04.05.2006 18:05

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

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

Дикс 05.05.2006 19:58

меня всегда мучал один вопрос - почему многие кодеры пишут:
PHP код:

"<img src=\"/images/smiles/\\1.gif\" border=\"0\">" 

когда с одинарными кавычками код более удобно читать?
PHP код:

"<img src='/images/smiles/\\1.gif' border='0'>" 



Время: 00:19