СтранникПользователь №: 37 Сообщений: 7
| Пишу раскраску кода 1С
и столкнулся с проблемой, как постветить зарезервированные слова?
вот код
PHP - Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?php function encode_c($text) { $start_html = "<fieldset style=\"width: 95%; overflow: auto;\"><legend style=\"color: #323e5b;\">code_1Cv7</legend><div style=\"margin: 3px;\">"; $end_html = "</div></fieldset>"; $match_count = preg_match_all("#\[1cv7\](.*?)\[/1cv7\]#si", $text, $matches); for ($i = 0; $i < $match_count; $i++) { $after_replace = trim($matches[1][$i]); $after_replace = str_replace("<", "<", $after_replace); $after_replace = str_replace(">", ">", $after_replace); $after_replace = str_replace(""", '"', $after_replace); $after_replace = str_replace("'", "'", $after_replace); $after_replace = str_replace("&", "&", $after_replace); $after_replace = preg_replace("/ $after_replace = (substr($after_replace, 0, 2) != "<?") ? "<?php".$after_replace."" : $after_replace; $after_replace = (substr($after_replace, -2) != "?>") ? "".$after_replace."?>" : $after_replace; ob_start(); highlight_string($after_replace); $after_replace = ob_get_contents(); ob_end_clean(); $text = str_replace("[1cv7]".$matches[1][$i]."[/1cv7]", "".$start_html."".$after_replace."".$end_html."", $text); } $text = str_replace("<?php", "", $text); $text = str_replace("?>", "", $text); //доработка цветов для 1С $text = str_replace("#DD0000", "#000000", $text);//красн на черн $text = str_replace("#007700", "#DD0000", $text);//зелн на красн $text = str_replace("#FF8000", "#007700", $text);//желт на зелн
$str = array("'(\Если)'si", "'(\Тогда)'si", "'(\ИначеЕсли)'si", "'(\Иначе)'si", "'(\КонецЕсли)'si", "'(\Для)'si", "'(\Каждого)'si", "'(\Из )'si", "'(\По)'si", "'(\Пока)'si", "'(\Цикл)'si", "'(\КонецЦикла)'si", "'(\Процедура)'si", "'(\Функция)'si", "'(\КонецПроцедуры)'si", "'(\КонецФункции)'si", "'(\Перем)'si", "'(\Перейти)'si", "'(\Возврат)'si", "'(\Продолжить)'si", "'(\Прервать)'si", "'(\И)'si", "'(\Или)'si", "'(\Не)'si", "'(\Попытка)'si", "'(\Исключение)'si", "'(\ВызватьИсключение)'si", "'(\КонецПопытки)'si", "'(\Новый)'si", "'(\Выполнить)'si", "'(\Экспорт)'si", "'(\Неопределено)'si", "'(\ИСТИНА)'si", "'(\ЛОЖЬ)'si"); $replace = array_fill(0, count($str), "<span style='color: #DD0000'>\\1</span>"); $text = preg_replace($str, $replace, $text); return $text; ?> |
Он раскрашивает, но не правильно :( Как сделать так чтобы он менял не все подрят а только при ТОЧНОМ совпадении.
Спасибо. |
|