На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> найти в файлах "<? " и заменить "<?php "
    найти в файлах "<? " и заменить "<?php "
    Как такое сделать?
    нужно обыскать папку htdocs
      1) Для замен в одном файле используем sed - он позволяет задавать команды при вызове
      2) Для массовой замены во всех файлах во всех подпапках, подготовим пакетный файл с одним параметром
      и используем команду find c ключом -exec
        мне не помогло :no:
        я только ГУИ видел :whistle:
          Ну так тогда какие проблемы? Зачем тебе эта мерзкая консоль? :D

          ExpandedWrap disabled
            find -type f -name "*.php" | xargs -n1 -i sed -i "регэксп" {}
          а регэксп ты лучше меня, наверно, знаешь, как составить.

          Добавлено
          ExpandedWrap disabled
            find -type f -name "*.php" | xargs -n1 -i sed -i "s/<? /<?php /" {}
            Цитата orb @
            я только ГУИ видел
            А средствами какой-нить IDE не получается?
              Цитата Adil @
              find -type f -name "*.php" | xargs -n1 -i sed -i "s/<? /<?php /" {}

              ExpandedWrap disabled
                find . -type f -iname '*.php' -exec sed -e 's%<? %<?php %g' -i {} \;
              Сообщение отредактировано: dmitry_vk -
                Цитата Adil @
                find -type f -name "*.php" | xargs -n1 -i sed -i "s/<? /<?php /" {}
                было-бы всё так просто :'(

                Когда-то стояла подобная задача. Так вот: пробела после <? (и после <?=) вполне может и не быть, причем не только из-за наличия вместо него конца строки, но и просто так. Т.е. строки вроде <?foreach($a as $b), вполне себе парсятся и не вызывают синтаксических ошибок.
                  ну так, что ТС попросил, то и написал. Я в регэкспах не особо силён, но не думаю, что там что-то сложное будет - главное задачу сформулировать. Что надо то? Напимер <?foreach($a as $b) - вставлять php или нет? Или вставлять php за <? везде, где его нет? sed'у можно задать перловские регэкспы, они очень гибкие.
                    Цитата Adil @
                    Что надо то?
                    Вставлять php за всеми <?, которые не внутри строк и после которых не стоит php или =.
                      Цитата orb @
                      я только ГУИ видел

                      Ну тогда любой текстовый редактор, который не пытается html и иже с ними анализировать и умеет regexp.
                      И уточни задачу.
                        Цитата Dark Side @
                        Вставлять php за всеми <?, которые не внутри строк и после которых не стоит php или =.
                        условие "которые не внутри строк" значительно усложняет дело. А такое - на практике - встречается? Зачем нужен <? внутри строк?
                          jEdit такие вещи всю жизнь делал. "<?([^p=])" replace to "<?php$1"
                          <?= заменить отдельно
                          после чего запускаем git diff и проверяем:
                          Цитата Adil @
                          условие "которые не внутри строк"
                          Сообщение отредактировано: negram -
                            Да тот-же netbeans делает поиск и замену регулярке. и наверняка не только он.
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0674 ]   [ 15 queries used ]   [ Generated: 3.05.24, 01:25 GMT ]