удалить комментарий в php
Лучший способ автоматически удалять комментарии из кода PHP
Каков наилучший способ удалить комментарии из файла PHP?
(Хотя, если пустые строки остаются там, где удаляются комментарии, это не будет хорошо).
11 ответов
Я бы использовал токенизатор. Вот мое решение. Он должен работать как на PHP 4, так и на 5:
Вот функция, опубликованная выше, модифицированная для рекурсивного удаления всех комментариев из всех файлов php внутри каталога и всех его подкаталогов:
я понял, что Ionut G. Stan уже предложил это, но я оставлю пример здесь
Версия более мощная: удалите все комментарии в папке
Если вы уже используете редактор, такой как UltraEdit, вы можете открыть один или несколько файлов PHP и затем использовать простой метод поиска и замены (CTRL+R) со следующим регулярным выражением Perl
Осторожно, приведенное выше регулярное выражение удаляет также комментарии внутри sring, то есть в echo «hello/*babe*/»; /*babe*/ будет удален тоже. Следовательно, это может быть решением, если у вас мало файлов для удаления комментариев, чтобы быть абсолютно уверенным, что оно не заменит неправильно то, что не является комментарием, вам придется запускать команду «Найти и заменить» и утверждать каждый раз, что заменяется.
Решение Bash: если вы хотите рекурсивно удалять комментарии из всех PHP-файлов, начиная с текущего каталога, вы можете написать в терминале эту однострочную строку. (оно использует temp1 файл для хранения содержимого PHP для обработки)Обратите внимание, что это уберет все пробелы с комментариями.
Тогда вы должны удалить temp1 файл после.
если установлен PHP_BEAUTIFER, вы можете получить красиво отформатированный код без комментариев с
Для ответов ajax/json я использую следующий код PHP, чтобы удалить комментарии из кода HTML/JavaScript, поэтому он будет меньше (около 15% для моего кода).
Изучаем комментарии в PHP
Комментарии в PHP при выполнении скрипта игнорируются препроцессором, и нужны только для людей. Разработчики часто пренебрегают комментированием кода.
Среди программистов бытует мнение, что они вспомнят, как работает код, и через шесть месяцев и через год. Еще одна причина не оставлять комментарии — уверенность в том, что код настолько хорошо написан, что он ясен и без пояснений. Но нужно помнить, что может потребоваться продолжать поддерживать созданные скрипты PHP долгое время после написания.
Не менее важная причина комментирования кода — убедиться, что последователи поддерживают или добавляют функциональность вашему творению. Они также получат пользу от чтения оставленных комментариев.
Однострочные комментарии в PHP
Перед комментариями, которые находятся на одной строке, в PHP ставятся два символа косой черты ( // ).
Следующий пример содержит однострочный PHP комментарий в коде:
Однострочный комментарий может находиться на отдельной строке, или добавляется в конец строки кода:
Однострочные комментарии также применяются, чтобы временно убрать строки кода из потока выполнения. Например, следующее изменение предыдущего примера приведет к тому, что PHP проигнорирует всю команду echo во время выполнения:
Многострочные комментарии в PHP
Многострочные комментарии для сайта PHP обернуты разделителями / * и * /. Знак /* обозначает начало блока комментариев, а */ указывает на его конец. Следующий пример демонстрирует использование многострочного комментирования:
Многострочные комментарии полезны, когда заметки, которые вы хотите вставить в код, занимают более одной строки. Возможность помечать блоки строк как комментарии позволяет избежать использования однострочного комментария в начале каждой строки.
Итоги
Пожалуйста, оставьте ваши мнения по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, отклики, лайки, дизлайки, подписки!
Удалить комментарий в php
Яндекс.Доставка и S7 Logistics запускают быструю доставку между городами
15 частых проблем технического SEO и как их устранить
Задача такая: Нужно удалить комментарии по типу // из php-кода с помощью Notepad++
Через поиск и замену можно использовать регулярное выражение \//.*
Но оно немного не подходит, так как вместе с комментариями полетят и урлы
http:// и некоторые переменные, которые содержать символы //
Как быть, чтобы удалить комментарии, но при этом сохранить все ссылки и значения переменных!?
Не сильно в регулярках notepad++ шарю, а там признак начала строки не поддерживается?
P.s. Я так думаю, для того, чтобы не затрагивались переменные нужно сделать исключение замены, если присутствуют кавычки ‘ и » (тока я не знаю, как это сотворить через рег.выр.), а вот с урлами, наверное, нужно смотреть по http:
может пробел там ещё стоит перед комментом. можно попробовать кириллицу исключить, если комментарии на ней
Комменты на латинице. С пробелом клёво придумал, но там некоторые все-таки сплошняком идут //comment, хотя большинство с пробелом // comment
Одними регулярками тут не обойтись.
Надо сначала распарсить весь php-файл, определить, где начинаются и заканчиваются строки и только потом вырезать комментарии. Если в php-файлах присутствует текст (за пределами ), то нужно ещё и этот текст не затронуть.
Придумал решения проблемы! ☝
Не знаком с Notepad++, но когда подобную задачу решал регулярками на PHP, то разбивал файл на строки, в каждой строке удалял начальные пробелы и табы, а затем, если получившаяся строка начиналась с //, то удалял всю эту строку ( ‘http://’ тут никак не мешают).
Так что в сотни раз проще просто не делать таких комментариев.
\n — это знак новой строки
Выражение будет примерно следующим: \n//.*
У вас в коде точно нигде не встречается текст в строках похожий на комментарии? Иначе он тоже удалится.
Такой алгоритм будет удалять якобы «комментарии» из строк. Пример:
//world в данном случае не комментарий, но он удалится.
Заголовок вверху выведет ‘Это пример’.
User Contributed Notes 11 notes
Notes can come in all sorts of shapes and sizes. They vary, and their uses are completely up to the person writing the code. However, I try to keep things consistent in my code that way it’s easy for the next person to read. So something like this might help.
/* Title Here Notice the First Letters are Capitalized */
# Option 1
# Option 2
# Option 3
/*
* This is a detailed explanation
* of something that should require
* several paragraphs of information.
*/
// This is a single line quote.
?>
It is worth mentioning that, HTML comments have no meaning in PHP parser. So,
WILL execute some_function() and echo result inside HTML comment.
Comments in PHP can be used for several purposes, a very interesting one being that you can generate API documentation directly from them by using PHPDocumentor (http://www.phpdoc.org/).
Therefor one has to use a JavaDoc-like comment syntax (conforms to the DocBook DTD), example:
/**
* The second * here opens the DocBook commentblock, which could later on
* in your development cycle save you a lot of time by preventing you having to rewrite
* major documentation parts to generate some usable form of documentation.
*/
?>
Some basic html-like formatting is supported with this (ie
tags) to create something of a layout.
Actually, both are correct. Once a comment is opened, *everything* is ignored until the end of the comment (or the end of the php block) is reached.
Thus, if a comment is opened with:
// then /* and */ are «overridden» until after end-of-line
/* then // is «overridden» until after */
Be careful when commenting out regular expressions.
E.g. the following causes a parser error.
I do prefer using # as regexp delimiter anyway so it won’t hurt me 😉
In php there are 3 types of comments
1.single line c++ style comment(//)
2.single line Unix shell stype comment(#)
3.multi line c style comment(/*/)
single or multi line comment comes to the end of the line or come first to the current block of php code.
HTML code will be printed after //. > or #. >
closing tag breaks the php mode and return to html mode.
The header above will break php mode and return html mode and show ‘Standard tag:single line c++ style comment’
The header above will break php mode and return html mode and show ‘Standard tag:single line unix shell style comment’
The header above will break php mode and return html mode and show ‘Standard tag:multi line c style comment’
The header above will break php mode show a unexpected syntex error’
The header above will break php mode show a unexpected syntex error’
The header above will break php mode show a unexpected syntex error’
Short tag: single line c++ style comment
The header above will break php mode and return html mode and show ‘Short tag:single line c++ style comment’
Short tag: single line unix shell style comment
The header above will break php mode and return html mode and show ‘Short tag:single line unix shell style comment’
Short tag: multi line c style comment
The header above will break php mode and return html mode and show ‘Short tag:multi line c style comment’
Script tag: single line c++ style comment
The header above will break php mode and return html mode and show ‘Script tag:single line c++ style comment’
Script tag: multi line c style comment
The header above will break php mode and return html mode and show ‘Script tag:multi line c style comment’
Script tag: single line unix shell style comment
The header above will not break php mode
Comments do NOT take up processing power.
So, for all the people who argue that comments are undesired because they take up processing power now have no reason to comment 😉
// Control
echo microtime (), «
» ; // 0.25163600 1292450508
echo microtime (), «
» ; // 0.25186000 1292450508
?>
They take up about the same amount of time (about meaning on a repeated testing, sometimes the difference between the control and the test was negative and sometimes positive).
a trick I have used in all languages to temporarily block out large sections (usually for test/debug/new-feature purposes), is to set (or define) a var at the top, and use that to conditionally comment the blocks; an added benefit over if(0) (samuli’s comment from nov’05) is that u can have several versions or tests running at once, and u dont require cleanup later if u want to keep the blocks in: just reset the var.
personally, I use this more to conditionally include code for new feature testing, than to block it out. but hey, to each their own 🙂
this is also the only safe way I know of to easily nest comments in any language, and great for multi-file use, if the conditional variables are placed in an include 🙂
for example, placed at top of file:
and then deeper inside the file:
Удалить комментарий в php
не дает должного результата
работает хорошо, но не вырезает комментарии на кириллице.
(там весь алфавит) но нет результата
Помогите составить выражение, чтобы также удалялись коментарии на кириллице, точнее вообще все, что между /* и */ (независимо от кодировки)
P.S Пробовал также опережающую проверку, но не «режет» с кириллицей
первый вариант, впринципе, правелен, только почитай-ка на тему жадности квантификаторов: http://ru2.php.net/manual/ru/reference.pcre.pattern.syntax.php
там как раз про парсинг комментариев было.
и ещё, очень, очень, и очень рекомендую писать шаблоны в одинарных кавычках, ибо пхп сначала сам обрабатывает строку, только потом передаёт её в функцию.
по поводу кодировки(кириллицы) см. http://ru2.php.net/set_locale
А вот как быть например с таким кодом? Ведь регулярное выражение и его вырежет как комментарий.