• Как в php конвертировать bb коды в html​С недавних пор, читатели моего блога могут комментировать статьи используя bb коды. До этого на сайте была собственная система парсинга комментариев. Она часто работала не корректно и имела кучу дыр. несколько раз пользователи блога демонстрировали мне, как легко на сайте можно разместить вредоносный JavaScript, осуществляя инъекцию. Поразмыслив, решил, что для моего проекта отлично подойдут bb коды. Для этого нашел библиотеку на сайте phpclasses, который github был наверно одним из основных источников готовых решений. 

    Класс с говорящим названием BBCode. Скачать его можно с моего сайта.

  • В своем блоге для подсветки кода я использую syntaxhighlight. Удобная штука, для того чтобы подсветить код его нужно заключить в теги

    <pre class="brush:php">
    </pre>

    Ну и в странице, где этот код будет показан подключить необходимые скрипты и активировать подсветку

    <link href='js/highlight/styles/shCoreDefault.css' rel='stylesheet' type='text/css'/>
    <link href='js/highlight/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
    <script src='js/highlight/scripts/shCore.js' type='text/javascript'></script>
    <script src='js/highlight/scripts/shAutoloader.js' type='text/javascript'></script>
    <script src='js/highlight/scripts/shBrushCss.js' type='text/javascript'></script>
    <script src='js/highlight/scripts//shBrushXml.js' type='text/javascript'></script>
    <script src='js/highlight/scripts/shBrushJScript.js' type='text/javascript'></script>
    <script src='js/highlight/scripts/shBrushPhp.js' type='text/javascript'></script>
    <script language='javascript'>
    SyntaxHighlighter.config.bloggerMode = false;
    SyntaxHighlighter.defaults.toolbar = false;
    SyntaxHighlighter.defaults['pad-line-numbers'] = true;
    SyntaxHighlighter.all();
    </script>

    Все бы ничего если бы не одна мелочь, вставлять код в ckeditor страшно неудобно. Приходиться извращаться с исходным текстом, что обычно неминуемо приводит к ошибке в html.

  • Во истину, все гениальное просто. Открыл для себя удивительную php функцию highlight_string, как понятно из названия данная функция подсвечивает код в зависимости от синтаксиса, на выходе вы получаете html код который можно вставить в любую html страницу, не нужны ни css ни js. Все будет подсвечено, аккуратно и просто:

    <?php highlight_string('<?php echo 1; ?>',true); ?>

    на выходе дает вот такой html код

    <code><span style="color: #000000"> <span style="color: #0000BB"><?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?></span> </span> </code>

    или если это отобразить на странице то так

    <?php echo 1?>

    круто, да?! 

    Вторым параметром функция принимает true или false, если true то функция возвращает результат, если false, то выводит его на экран. По умолчанию стоит false