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

Форум Регулярные Выражения

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

 

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

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

тема: Помогите с поиском Точного соответствия.
 
 автор: wicked   (21.02.2008 в 12:07)   письмо автору
 
 

Пишу раскраску кода 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.
Спасибо.

   
Rambler's Top100
вверх

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