За последние 24 часа нас посетили 24900 программистов и 1687 роботов. Сейчас ищут 912 программистов ...

Найти все php файлы с финальным ?>

Тема в разделе "PHP для профи", создана пользователем artoodetoo, 4 дек 2016.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Все мы знаем, что оставлять в конце php файла закрывающий ?> плохо.
    Подскажите элегантное решение желательно в одну строку (grep, tail, etc.) которой можно было бы найти такие файлы. В том числе и те, у которых есть пустые строки после ?>

    Программу я сам могу написать, хочется получить совет от гуру командной строки.
     
  2. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    grep -r -n «text» -С3 /path
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Кто-то решил стряхнуть пыль со старого, обросшего TODO-комментами кода? :)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    и таки что?
     
  5. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Код (Text):
    1. grep -rlzP "\?>\s*\z" /path
     
    artoodetoo нравится это.
  6. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    таки ты же хочешь с консоли запустить поиск ..
    я предложил поиск - а теперь расказываю какой

    -r - рекурсивка
    -n - номер строки
    "?>" - конец строки
    -С3 печатать ЧИСЛО строк контекста - покажет немного больше чем то что ты хочешь
    /path - путь к страничкам

    и таки что тут не правильного ?
    --- Добавлено ---
    покажет чтото типа такого ( чтобы вам не думалось сразу говорю - это тестовый проект разбора fias - адреса -в инете все есть)

    Код (Text):
    1. [root@host-15 var]# grep -r -n "?>" -C3 /var/www/html
    2. /var/www/html/fias/stockquote.wsdl:1:<?xml version ='1.0' encoding ='UTF-8' ?>
    3. /var/www/html/fias/stockquote.wsdl-2-<definitions name='StockQuote'
    4. /var/www/html/fias/stockquote.wsdl-3- targetNamespace='http://example.org/StockQuote'
    5. /var/www/html/fias/stockquote.wsdl-4- xmlns:tns='http://172.16.1.239/fias/server.php'
    6. --
    7. /var/www/html/fias/nbproject/private/private.xml:1:<?xml version="1.0" encoding="UTF-8"?>
    8. /var/www/html/fias/nbproject/private/private.xml-2-<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
    9. /var/www/html/fias/nbproject/private/private.xml-3-    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="2"/>
    10. /var/www/html/fias/nbproject/private/private.xml-4-    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
    11. --
    12. /var/www/html/fias/nbproject/project.xml:1:<?xml version="1.0" encoding="UTF-8"?>
    13. /var/www/html/fias/nbproject/project.xml-2-<project xmlns="http://www.netbeans.org/ns/project/1">
    14. /var/www/html/fias/nbproject/project.xml-3-    <type>org.netbeans.modules.php.project</type>
    15. /var/www/html/fias/nbproject/project.xml-4-    <configuration>
    16. --
    17. /var/www/html/fias/index.php-167-
    18. /var/www/html/fias/index.php-168-
    19. /var/www/html/fias/index.php-169-
    20. /var/www/html/fias/index.php:170:?>
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Арту, хз как в нетбинсах, а во штормах можно сделать поиск по всему проекту и указать регулярку. В том числе с заменой. Найдет тебе все закрывашки в конце файлов и заменит их хоть на звезды, хоть на небо, хоть на аллаха.
     
    Deonis и denis01 нравится это.
  8. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Поздно, я вперёд (на псевдокоде) :) :

    Код (PHP):
    1. <?php
    2. $file = file_get_content(STDIN);
    3. $file = rtrim($file, "\n\r\t ?>")
    4. echo $file . "\n";
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Как тут минусуют? :)

    @Slavka мне не нужен ни номер строки, ни показать чуть больше. Мне нужно найти файлы, заканчивающиеся на ?> То, что ты показал, возможно и правильно, только никак не связано с моей задачей.

    @Fell-x27 я указал контекст: командная строка.

    @topas еще раз: нужна командная строка. и я не правлю файлы, а ищу их. нюанс!

    В общем, все говорят о своём, а не о поставленной цели, как обычно. Я сам так поступаю. Всем спасибо!
    Emilien дал пример, вроде бы рабочий, спасибо, попробую!
    --- Добавлено ---
    Кажется я нашел правильную поисковую строку для Гугл.
    https://www.google.ru/search?q=find+php+files+with+tailing+tag
     
    #9 artoodetoo, 5 дек 2016
    Последнее редактирование: 5 дек 2016
    topas нравится это.
  10. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    задача решается легко и красво - grep прекрасно понимает регулярки - вот ответ как ты просил

    grep -r -E "\?>( )*?$" /path

    Просто сначала я думал что задача немного другая ( ты в командной строке будет просматривать глазками) поэтому дал и номера строчек .. и немного расширил вывод на экран

    ну раз нашел так нашел.
     
    denis01 нравится это.
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Нет Slavka, не годится. Забей уже.
    --- Добавлено ---
    Emilien уже дал годный ответ.
    Оставлю здесь вариант с дополнительными масками на расширение файла и указанием куда не заходить, чисто для ускорения процесса:

    Код (Text):
    1. grep -rlzP --include "*.phtml" --include "*.php" --exclude-dir=.git "\?>\s*\z" ./