Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить все комментарии, /*это все нужно удалить*/ 
:(
    Опции темы
Sunvas
Дата 13.5.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Как из PHP файла удалить все комменатарии вида /*текст*/?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Всемогущий
Дата 13.5.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 3
Всего: 13



Код

<?php
$string = "April/* */ 15, 2003/* */";
$pattern = "#\/\*.*\*/#isU";
$replacement = "";
echo preg_replace($pattern, $replacement, $string);
?>


Добавлено через 3 минуты и 20 секунд
Код

$pattern = "/\/\*.*\*\//isU";    //так прикольней



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Sunvas
Дата 13.5.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Всемогущий, хорошо.  Но мой вопрос был несколько в другом: у меня есть пару десятков тысяч PHP файлов. Нужно критически уменьшить их объем. Я решил удалить лишние комментарии (они занимают примерно 40%). Мож софт для этого какой есть? Или как это удобнее всего сделать?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Всемогущий
Дата 13.5.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 3
Всего: 13



Sunvas, если у тебя работает хотя бы на одном файле я напишу тебе 
Цитата(Sunvas @  13.5.2007,  19:11 Найти цитируемый пост)
софт для этого 




--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Всемогущий
Дата 13.5.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 3
Всего: 13



Осторожно!!

Код

<?php
function grab($obj){
        $string =file_get_contents ($obj);
        $pattern = "#\/\*.*\*/#isU";
        $otvet=preg_replace($pattern,'',$string);
        return file_put_contents ($obj,$otvet);
        }
function full_rewrite_dir($dir)
{
    $handle = opendir($dir);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            if (is_file("$dir/$file")) {
                grab("$dir/$file");
            } elseif (is_dir("$dir/$file")) {
                full_rewrite_dir("$dir/$file");
            }
        }
    }
closedir($handle);

}

 full_rewrite_dir('.')
?>



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
vasac
Дата 13.5.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 1
Всего: 36



а так:
$str = "Строка \* с камментами *\ smile"; ?

Sunvas, может быть ZendOptimizer подойдет?

Это сообщение отредактировал(а) vasac - 13.5.2007, 17:48
PM WWW   Вверх
Всемогущий
Дата 13.5.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 3
Всего: 13



vasac,  слеши должны быть в другую сторону.

Добавлено через 56 секунд
ZendOptimizer может купишь его на всех ? smile 


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Sunvas
Дата 13.5.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Цитата(vasac @  13.5.2007,  17:47 Найти цитируемый пост)
Sunvas, может быть ZendOptimizer подойдет?

А там есть фича удаления комментариев?
Я сначала пробовал Dreamweaver-ом и FrontPage-м удалять комменты при помощи регулярок, но почему-то они находят только комментарии в одну строку: /* комментарий */, а многострочные игнорируют. smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Всемогущий
Дата 13.5.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 3
Всего: 13




Sunvas, у тебя работает или нет?


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Sunvas
Дата 13.5.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Цитата(Всемогущий @  13.5.2007,  18:47 Найти цитируемый пост)
Sunvas, у тебя работает или нет?

Твой код - да. Но иногда встречаються артефакты: некоторые картинки не работают после этого. И чего-то не все файлы прочесывает.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
-=Ustas=-
Дата 14.5.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Цитата(Sunvas @  13.5.2007,  19:43 Найти цитируемый пост)
Но иногда встречаються артефакты: некоторые картинки не работают после этого

Поставь фильтр только на php файлы в функции перечитки каталога.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Replicator
Дата 14.5.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 30.4.2006
Где: Outer Heaven

Репутация: нет
Всего: нет



Для PHP-файлов в РНР есть специальная функция, которая правильно удалит все комментарии (не только /* */, но и //, и #), лишние пробелы и переводы строк:
Код

php_strip_whitespace()


А вот решение на основе этой функции:
Код

<?php

//common variables
$size_c = 0;
$orig_size_c = 0;

$format = "| %-52s | %17.2f | %19.2f | %19.2f |\n";

/**
 * Process all PHP files in directory and all subdirectories
 *
 * @param $dir string Path to the directory which we want to process
 */
function processfiles($dir) {
    global $size_c, $orig_size_c, $format;

    //open directory
    $handle = opendir($dir);

    //get all files
    while (false !== ($file = readdir($handle))) {

        //if it is file we need to process
        if ($file != '.' && $file != '..') {

            //full name
            $filename = $dir . '/' . $file;

            //if directory then call this function
            if (is_dir($filename)) {
                processfiles($filename);

            } else {

                //get extention
                $ext = substr($filename, strrpos($filename, '.') + 1);

                //If it is PHP file then process it
                if ($ext == 'php') {
                    $orig_size = filesize($filename);
                    $size = file_put_contents($filename,
                                              php_strip_whitespace($filename));

                    $size_c += $size;
                    $orig_size_c += $orig_size;

                    $compr = 100 - $size / $orig_size * 100;
                    $orig_size /= 1024;
                    $size /= 1024;
                    $filename = substr($filename, 4);

                    printf($format, $filename, $orig_size, $size, $compr);
                }
            }
        }
    }

   closedir($handle);
}

header('Content-type: text/plain');

echo '+------------------------------------------------------+-------------------+---------------------+---------------------+', "\n";
echo '| filename                                             | original size, Kb | compressed size, Kb | compression rate, % |', "\n";
echo '+------------------------------------------------------+-------------------+---------------------+---------------------+', "\n";

processfiles('src');

echo '+------------------------------------------------------+-------------------+---------------------+---------------------+', "\n";

$compr_c = 100 - $size_c / $orig_size_c * 100;
$orig_size_c /= 1024;
$size_c /= 1024;

printf($format, 'summary', $orig_size_c, $size_c, $compr_c);

echo '+------------------------------------------------------+-------------------+---------------------+---------------------+', "\n";


Добавлено через 5 минут и 30 секунд
А вот что меня действительно интересует. Возьмем, к примеру, JavaScript и будем удалять комментарии из него. Вот пример комментариев:
Код

/**
 * Сначала все прекрасно
 * /* Проблема!!!
 */
function name2() {
  //все ОК
}

После применения регулярного выражения получим:
Код

/**
 * Сначала все прекрасно
 * 
function name2() {
  //все ОК
}

Т.е. код испортился! Как быть с этим?
--------------------
 
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.