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

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

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

 

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

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

тема: Переименовать константы в PHP файле
 
 автор: игорек   (30.11.2010 в 21:10)   письмо автору
 
 

Здравствуйте!Есть задача переименовать константы в 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".Естественно заменять в таких ситуациях не нужно!:(Как объяснить с помощью регулярного выражения что перед названием должно стоять четное количество кавычек таких (') или таких ("), т.е. заменять только те названия,которые не между кавычками!В сети ничего подобного не нашел!:(Всем Спасибо!

  Ответить  
 
 автор: Deed   (19.01.2011 в 19:53)   письмо автору
 
   для: игорек   (30.11.2010 в 21:10)
 

/(?<=(?:'|"))\b(\w+)\b(?=(?:'|"))/Ui

В $1 - только слово в кавычках.


<?php
$prov
='"pore" pore cloun \'dippest\' voxter "table" div table shooting "table apperions';
preg_match_all("/(?<=(?:'|\"))\b(\w+)\b(?=(?:'|\"))/Uis",$prov,$match);
echo 
"<pre>";
print_r($match[1]);
echo 
"</pre>";

?>


Выведет:

Array
(
[0] => pore
[1] => dippest
[2] => table
)

Ибо второй "table - с одной кавычкой.

А НЕ между кавычками задается так:
/(?<!(?:'|"))\b(\w+)\b(?!(?:'|"))/Ui

  Ответить  
Rambler's Top100
вверх

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