Ну, я много пробовал со всем вашим кодом, сейчас я работаю с этим, но он все еще не дает ожидаемых результатов -
То, что я хочу, это обычная текстовая область, где можно поместить обычный текст, нажать клавишу ввода, ввести новую строку, не допуская теги здесь - возможно, <strong>
или <b>
....
Идеально было бы распознавать ссылки и окружать их <a>
тегами
Этот текст должен автоматически иметь <p>
и <br />
, где это необходимо.
Для заполнения кода на разных языках необходимо набрать
[code lang=xxx]
код [/code]
- в лучшем случае [code lang="xxx"]
или <code lang=xxx>
тоже будет работать.
Чем набрать код или скопировать и вставить его внутрь.
Код, который я сейчас использую, по крайней мере, выполняет изменение тегов и выводит их корректно, кроме вкладок и переносов строк:
public function formatForDisplay( $output ){
$output = preg_replace_callback( '#\[code lang=(php|js|css|html)]((?:[^[]|\[(?!/?code])|(?R))+)\[/code]#', array($this,'replaceWithValues'), $output );
return strip_tags($output,'<code>');
}
public function replaceWithValues( $matches ){
return '<code class="'.$matches[ 1 ].'">'.htmlentities( $matches[ 2 ] ).'</code>';
}
Похоже, что здесь работает.