mstdmstd
Новичок
Всем привет,
Хочу установить prismjs как описано тут
http://prismjs.com/index.html
И отобразить на экране php-код в php/codeigniter/twig/javascript приложении
Сначала в контроле убираю все переводы строк, так как переводы строк ломают представление этой строки в javascript-е:
$file_content - это содержимое небольшого php-файла
И в темплейте
Первый алерт отображает такую строку:
Второй алерт отображает такую же строку как и выше, с переносами строк, так как они выглядят в исходном файле.
Но на экране отображается код БЕЗ переноса строк и отладчик также не отображает перенос строк:
http://i.imgur.com/kSPkVEj.png
В доке на сайте я не нашел как нужно обрабатывать многострочный текст...
Спасибо !
Хочу установить prismjs как описано тут
http://prismjs.com/index.html
И отобразить на экране php-код в php/codeigniter/twig/javascript приложении
Сначала в контроле убираю все переводы строк, так как переводы строк ломают представление этой строки в javascript-е:
PHP:
$file_content= (str_replace( array("\r","\n"), "/*BREAK LINE*/", $file_content ));
$data = array( 'file_path' => $file_path, 'code_to_highlight' => $file_content, 'format'=> $format );
$this->showTwigTemplate('code_highlight_page', $data, false, false, false);
$file_content - это содержимое небольшого php-файла
И в темплейте
Код:
<script src="{{ base_url }}static/js/jquery/jquery-1.11.1.min.js"></script>
<script src="{{ base_url }}static/js/jquery/jquery-ui-1.11.1.min.js"></script>
<link rel="stylesheet" href="{{ base_url }}static/bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" href="{{ base_url }}static/css/prism.css"/>
<script type="text/javascript" src="{{ base_url }}static/js/prism.js"></script>
<script type="text/javascript">
jQuery(document).ready(function ($) {
// The code snippet you want to highlight, as a string
var code = "var data = 1;"; // если оставить только эту строку с кодом - то работает нормально
var code = escape("{{ code_to_highlight | raw}}"); // Если есть эта строка, то работает но в полученном коде нет переноса строк
alert( "code::"+(code) )
code= code.replace( /\/\*BREAK LINE\*\//gm, '\n' ) ; // вернуть переносы строк
alert( "++code::"+(code) )
// Returns a highlighted HTML string
var html = Prism.highlight( code, Prism.languages.php );
$("#div_code_to_highlight").html(html)
});
</script>
Код:
code::<?php/*BREAK LINE*/class Mpricing extends CI_Model {/*BREAK LINE*//*BREAK LINE*/ public function getRow() {/*BREAK LINE*/ $query = $this->db->get_where('pricing', array(), 1, 0);/*BREAK LINE*/ $ResultRow = $query->result('array');/*BREAK LINE*/ if (!empty($ResultRow[0])) {/*BREAK LINE*/ return $ResultRow[0];/*BREAK LINE*/ }/*BREAK LINE*/ return false;/*BREAK LINE*/ }/*BREAK LINE*//*BREAK LINE*/ public function UpdatePricing( $DataArray) {/*BREAK LINE*/ $query = $this->db->get_where('pricing', array(), 1, 0);/*BREAK LINE*/ $ResultRow = $query->result('array');/*BREAK LINE*/ if (empty($ResultRow[0])) {/*BREAK LINE*/ $DataArray['created_at'] = AppUtils::ShowFormattedDateTime(time(), 'MySql');/*BREAK LINE*/ $Res = $this->db->insert('pricing', $DataArray);/*BREAK LINE*/ if ($Res)/*BREAK LINE*/ return mysql_insert_id();/*BREAK LINE*/ } else {/*BREAK LINE*/ $Res = $this->db->update('pricing', $DataArray, array('id' => $ResultRow[0]['id']));/*BREAK LINE*/ if ($Res)/*BREAK LINE*/ return $Res;/*BREAK LINE*/ }/*BREAK LINE*/ }/*BREAK LINE*//*BREAK LINE*/}/*BREAK LINE*//*BREAK LINE*//*BREAK LINE*/
Но на экране отображается код БЕЗ переноса строк и отладчик также не отображает перенос строк:
http://i.imgur.com/kSPkVEj.png
В доке на сайте я не нашел как нужно обрабатывать многострочный текст...
Спасибо !