Переименовать константы в PHP файле

игорек87

Новичок
Здравствуйте!Есть задача переименовать константы в php файле, созданные функцией
define().Чтобы найти таковые пользуюсь, ну например этим регулярным выражением

$df=preg_match_all("/define\s*\(\s*[\'|\"](\w*)[\'|\"]\s*,[^,]*,\s*\w*\s*\)/i",$text,$mass_def,PREG_SET_ORDER);
if($df){
foreach($mass_def as $k){
$a[]=$k[1];
}
}



Здесь все понятно.В массиве $a записаны имена констант!
Нужно с помощью регулярных выражений заменить эти названия на другие...
Возьмем к примеру константу
define("TABLE",'test',true);


Проблем не возникает с заменой,но а вот если в скрипте встречается такая строчка:

...
$text='TABLE - Хороший тег в HTML';
...



и тоже произведется замена "TABLE".Естественно заменять в таких ситуациях не нужно!:(Как объяснить с помощью регулярного выражения что перед названием должно стоять четное количество кавычек таких (') или таких ("), т.е. заменять только те названия,которые не между кавычками!В сети ничего подобного не нашел!:(Всем Спасибо!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
В чем глубокий смысл сиих действий?
 

AmdY

Пью пиво
Команда форума
игорек87
не проще ли воспользоваться готовыми решениями?
 

игорек87

Новичок
нет! я поэтому и обратился на форум,чтобы разобраться,а не использовать чужие куски кода...
 

Ragazzo

TDD interested
игорек87
тогда иди читай про регулярки, или готовое желает барин?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Эх, Игорек, Игорек... Велосипеды безусловно рулят
 

игорек87

Новичок
Вот идей нет, тогда тема закрыта.А то я смотрю полно таких на форумах с вопросами :"А зачем?", "А почему?","Не проще ли воспользоваться готовыми решениями?"
 

tz-lom

Продвинутый новичок
игорек87
у тебя даже формулировка проблемы не покрывает все возможные случаи
например
PHP:
$a = "olo\"lo";
define("trollface","cool ' face");
проверка на чётность не есть решение
у пыха было расширение парсящее php код на лексемы,тебе к нему,потом пройдёшься и поменяешь их на нужные
BTW
не проще ли воспользоваться готовыми решениями?
 

AmdY

Пью пиво
Команда форума
игорек87
говорим, а толку? ты мог взять готовый скрипт и сделать за час-другой, но процесс дороже результата. кстати вот ещё вариант. ты же всё равно задалбёшь мозг себе с заменой констант.
http://www.php.net/manual/en/tokenizer.examples.php
ха, пока писал уже пнули в нужном направлении на данную ссылку
 

игорек87

Новичок
На самом деле глобальный вопрос!Относится не только к константам,определенных функцией define(),но и к замене имен функций, классов,даже вырезки комментарий!!!
Вырезал комментарии, так мой скрипт DOCTYPE поковеркал ( '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">') .Вообщем нужная вещь, объяснить с помощью регов что вырезать между кавычками не нужно!!!Так понял там одной строчкой регулярки не обойдешься!Почему я не прогаммист NOTEPAD++ :),там то все "подсвечивается" сразу.Не посилам мне...
 

tz-lom

Продвинутый новичок
игорек87
NOTEPAD++ - проект с открытым исходным кодом
скачай посмотри как там сделанно
 
Сверху