Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: раскраска кода 1С
 
 автор: wicked   (21.02.2008 в 11:29)   письмо автору
 
 

Пишу раскраску кода 1С
и столкнулся с проблемой, как подсветить зарезервированные слова?

вот код
<?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;
?>


Он раскрашивает, но не правильно :( Как сделать так чтобы он менял не все подряд, а только при ТОЧНОМ совпадении из массива $str.
Спасибо.

   
 
 автор: mihdan   (21.02.2008 в 11:48)   письмо автору
 
   для: wicked   (21.02.2008 в 11:29)
 

Паттерн чтот типа такого, а вообще вам в форум по регуляркам

<?
$pattern 
'/^Если$/si';
?>

   
 
 автор: wicked   (21.02.2008 в 20:32)   письмо автору
 
   для: mihdan   (21.02.2008 в 11:48)
 

:( не работает, вообще не находит.
Может еще кто-нибудь знает?!

   
 
 автор: _гость_   (21.02.2008 в 20:53)
 
   для: wicked   (21.02.2008 в 20:32)
 

<?
$str 
= array("#\b(Если)\b#i""#\b(Тогда)\b#i""...............");
$replace "<span style='color: #DD0000'>\$1</span>";
$text preg_replace($str$replace$text);

   
 
 автор: wicked   (26.02.2008 в 15:07)   письмо автору
 
   для: _гость_   (21.02.2008 в 20:53)
 

Спасибо большое! Работает!
По поводу Геши, пробовал, не очень понравилось :(
больше понравилось http://softwaremaniacs.org/soft/highlight/

   
 
 автор: mihdan   (22.02.2008 в 08:01)   письмо автору
 
   для: wicked   (21.02.2008 в 11:29)
 

есть еще исходные коды Геши

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования