Иногда возникает необходимость выполнить замену некоего текста в некоей группе файлов. Например я лично столкнулся с такой необходимостью вот как. У интерпретатора PHP (для несведущих — это один из самых распространенных языков программирования для написания сайтов (его называют «пэ-ха-пэ», «пыха», иногда лингвистически правильно — «пи-эйч-пи»), есть возможность использовать т.н. «короткий синтаксис». Что такое «короткий синтаксис»?
Ну, сам исходный код на языке PHP должен быть заключен в теги <?php ?>. Т.е., например, вывод на экран значения переменной name в теле некоей HTML-разметки, может выглядеть так:
<h1>Ваше имя: </h1>
<h3><?php echo $name?></h3>
А можно написать чуть короче:
<h1>Ваше имя: </h1>
<h3><?=$name?></h3>
Т.е. вместо конструкции <php echo можно писать <?=
Хочу заметить, что даже на простеньком сайте таких вставок PHP-кода обычно используется не один десяток. Так что экономия для нас, ленивых программистов, в этом случае просто колоссальная!
Зачем я все это рассказываю? Сейчас поймёте! Всё было бы ничего, если бы этот короткий синтаксис поддерживался повсеместно. Но этого нет. И вот однажды я столкнулся с тем, что свежеприготовленный посудный интернет-магазин, который нужно сдавать заказчику не работает на хостинге. В чем проблема я то понял быстро, трудность состояла в том, что быстрого решения проблемы я не видел. Оставалось только врукопашную кидаться на сотню файлов сайта и искать в них десятки строк, вида «<?=», заменяя их на строки «<?php echo». Каково, а?
Но к счастью я вовремя вспомнил о существовании семейства полезных утилит, именуемых утилитами для пакетной обработки файлов. Утилит таких существует великое множество, большинство из них однотипные и отличаются только набором поддерживаемых функций: какие-то умеют только переименовать группу файлов по образцу, какие-то преобразовывают группы файлов из одного формата в другой (например из cp-1251 в UTF8), но большинство сочетают в себе несколько таких функций.
Я опишу только ту утилиту, на которой я остановил свой выбор. Это утилитка TextPipe от компании Datamystic. Утилита платная, но триальная, что меня вполне устроило, т.к. поработать с ней мне нужно было один раз, здесь и сейчас.
Утилита имеет русский интерфейс, обладает потрясающим функционалом (можете судить сами по скриншоту), помогает в работе с собой посредством использования мастеров и работает очень шустро. После установки, я выбрал из списка фильтров раздел «Поиск и замена», а в нем, среди без малого двух десятков фильтров, выбрал фильтр «Найти точно».
Конечно, в моем случае удобнее было бы использовать варианты поиска по маске, но экспериментировать не было ни времени, ни желания, т.к. в случае любой некорректной замены даже одного символа сайт работать не будет. Я прикинул, что мне нужно заменить варианты «<?» на «<?php». Все бы ничего, если бы я не писал магазин на фреймворке, используя уже готовые модули разработчика, в которых использовался классический синтаксис.
Т.е. просто заменив «<?» на «<?php» я получил в некоторых местах «<?phpphp» вместо «<?php». Не беда, я тут же указал еще раз «Найти точно» и выбрал найти все «<?phpphp» и заменить «<?php». Ву а ля, дорогие читатели, все получилось в лучшем виде! Естественно по ходу был еще один прогон, когда фразу «<?=» я заменил на «<?php echo». Но это уже лирика.
Что еще вызвало восторг, так это фича под названием «Зона учебного прогона». Там, выбрав все нужные фильтры и применив для них все необходимые настройки, мы имеем возможность потренироваться на каком-нибудь куске текста прямо в окне программы, не затрагивая живых данных на диске. Ну и лицезреть результат. А если поленились это сделать, или все-же чего-то недосмотрели и изменения в кучу файлов внеслись совсем не те, что нужно, то тоже не беда — программа бекапит все изменения и предоставляет легкую возможность отката. Меня лично это спасло при первом ее использовании 🙂
Похожие записи
Нет комментариев
Оставить комментарий или два