Необходимо использовать номер один, потому что номер два является плохой практикой. Полагайте, что разработчик, который приезжает после Вас, хочет к строкам совпадения, которые сопровождаются восклицательным знаком. Если он использует:
"[^"]*"!
или:
".*?"!
различие появляется, когда у Вас есть предмет:
"one" "two"!
первые соответствия regex:
"two"!
, в то время как второй regex соответствует:
"one" "two"!
Всегда быть столь конкретным, как Вы можете. Используйте отрицаемый класс символов, когда Вы будете мочь.
Другое различие - то, что [^ "]* может охватить через строки, в то время как.* не делает, если Вы не используете однострочный режим. [^ "\n] * исключает разрывы строки также.
Что касается отслеживания в обратном порядке, второй regex отслеживает в обратном порядке для каждого символа в каждой строке, которой это соответствует. Если заключительная кавычка отсутствует, оба, которых regexes отследит в обратном порядке через весь файл. Только порядок, в котором затем отслеживают в обратном порядке, отличается. Таким образом, в теории, первый regex быстрее. На практике Вы не заметите различия.
Ну, всегда есть
system('/bin/rm -rf ' . escapeshellarg($dir));
, где есть доступ.
Согласно этот источник;
Сэкономьте время, если вы хотите очистить каталог или удалить его, но вы находитесь в Windows.
Используйте это :
chdir ($file_system_path);
exec ("del *.* /s /q");
Вы можете использовать другой синтаксис DEL или любую другую утилиту оболочки. Возможно, вам придется разрешить службе взаимодействовать с рабочим столом, так как это моя текущая настройка, и я не меняю ее, чтобы проверить это.
Или вы можете найти альтернативный метод здесь.