brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, вот сегодня продолжил делать уже php парсер для своего сайта. Собственно пока что задумка легла вот на такой класс
<?php
class BBcodeParser {
public function parserString($string) {
$patterns = array();
$patterns[0] = '/\[b]/';
$patterns[1] = '/\[\/b]/';
$patterns[2] = '/\[i]/';
$patterns[3] = '/\[\/i]/';
$patterns[4] = '/\[u]/';
$patterns[5] = '/\[\/u]/';
$patterns[6] = '/\[s]/';
$patterns[7] = '/\[\/s]/';
$patterns[8] = '/\[smile]/';
$patterns[9] = '/\[\/smile]/';
$patterns[10] = '/\[a]/';
$patterns[11] = '/\[\/a]/';
$patterns[12] = '/\[sup]/';
$patterns[13] = '/\[\/sup]/';
$patterns[14] = '/\[sub]/';
$patterns[15] = '/\[\/sub]/';
$patterns[16] = '/\[h1]/';
$patterns[17] = '/\[\/h1]/';
$patterns[18] = '/\[h2]/';
$patterns[19] = '/\[\/h2]/';
$patterns[20] = '/\[h3]/';
$patterns[21] = '/\[\/h3]/';
$patterns[22] = '/\[h4]/';
$patterns[23] = '/\[\/h4]/';
$patterns[24] = '/\[h5]/';
$patterns[25] = '/\[\/h5]/';
$patterns[26] = '/\[h6]/';
$patterns[27] = '/\[\/h6]/';
$patterns[28] = '/\[img]/';
$patterns[29] = '/\[\/img]/';
$replacements = array();
$replacements[0] = "<b>";
$replacements[1] = "</b>";
$replacements[2] = "<em>";
$replacements[3] = "</em>";
$replacements[4] = "<u>";
$replacements[5] = "</u>";
$replacements[6] = "<s>";
$replacements[7] = "</s>";
$replacements[8] = "<img src='/images/smiles/";
$replacements[9] = ".gif' />";
$replacements[10] = "<a href='";
$replacements[11] = "'>ссылка</a>";
$replacements[12] = "<sup>";
$replacements[13] = "</sup>";
$replacements[14] = "<sub>";
$replacements[15] = "</sub>";
$replacements[16] = "<h1>";
$replacements[17] = "</h1>";
$replacements[18] = "<h2>";
$replacements[19] = "</h2>";
$replacements[20] = "<h3>";
$replacements[21] = "</h3>";
$replacements[22] = "<h4>";
$replacements[23] = "</h4>";
$replacements[24] = "<h5>";
$replacements[25] = "</h5>";
$replacements[26] = "<h6>";
$replacements[27] = "</h6>";
$replacements[28] = "<img src='";
$replacements[29] = "' />";
$result = preg_replace($patterns, $replacements, $string);
return $result;
}
}
?>
Подскажите, в верном направлении движусь?
И как возможно сделать парсинг для ссылок, где идёт более сложный процесс парсинга?
Заранее спасибо)
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Движетесь в абсолютно верном направлении, другое дело, что для ссылок (и, например, изображений) нужно будет, возможно, подставлять атрибуты из BB-кодов. Для этого надо использовать, например, $1 (то есть подстановку из группирующей скобки). То есть выделили элемент через скобки (например, href в BB-коде) и в preg_replace() подставили. А так всё верно.
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Спасибо))) Просто после ваших уроков к использованию чужих скриптов стал полностью негативно относиться))) Мусора действительно много)))
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, сделал вот такую дополнительную защиту для BBcode парсера
public function parserQuotes($string) {
$patterns = array();
$patterns[0] = '/\"/';
$patterns[1] = '/\'/';
$replacements = array();
$replacements[0] = """;
$replacements[1] = "'";
$result = preg_replace($patterns, $replacements, $string);
return $result;
}
и соответственно htmlspecialchars при получении входящих данных, как думаете, хватит такой защиты от sql иньекций?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
И одного htmlspecialchars() достаточно, плюс addslashes().
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Так вот в том то и дело, что я не хочу экранировать кавычки, а просто их заменять спец выражениями для html))) По сути впринципе те же кавычки при отображении, но в исходном коде набор 4 других символов)
malina95
Мастер
Дата регистрации:
15.07.2012 07:13:44
Сообщений: 208
Объясните пожалуйста как делать ббкоды и куда их вставлять и как проверять...
Очень прошу объясните!!!
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
ббкод по факту является неким изменённым видом html тэгов. Например [b] это ббкод <b>. Суть работы я выкладывал в этой теме, разобраться не сложно, всё довольно понятно. Остаётся вам лищь сделать вставку самого bbcode в редакторе, который вы можете написать или посмотреть в сторону того же tinyMCE. А вообще есть одно местечко, где можно решить любую проблему - http://google.com
malina95
Мастер
Дата регистрации:
15.07.2012 07:13:44
Сообщений: 208
Я знаю как они делаются...
Мне бы узнать например:
У меня есть комментарии на сайте и я хочу вставить туда кнопку КОД , кнопку Б , и кнопку И...
В какое место вставлять и шде обрабатывать ...
Короче нихрена не понимаю...Объясните пожалуйста...
А в гугле про это очень мало инфы (Есть только готовые скрипты - а куда их вставлять и где обрабатывать?)
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
jquery, читайте про эту библиотеку и практикуйтесь, и поймёте, написать подходящий вам скрипт можете только вы