Найти файлы PHP с вложенными пробелами

Пробелы в файлах PHP иногда проблематичны, поэтому я пытаюсь найти файлы, которые отвечают общим проблемным критериям. Я пытаюсь найти все файлы, рекурсивно, которые имеют одно или оба из этих условий:

1) Не начинается с символа < или # .

и / или

2) Не заканчивается символом a > , если он не заканчивается в тесной привязке, за которой следует любое количество строк новой строки.

Я думаю, что первое условие: $[^<#]

Я думаю, что второе условие было бы: [ [^>^] | [}\n*^]] [ [^>^] | [}\n*^]]

Однако обратите внимание, что в моих наивных регулярных выражениях $ и ^ представляют начало и конец файла, а не любую строку в файле. И даже с теми, считая, что они были правильными, как бы я их совмещал? Вот так?

 [$[^<#]] | [[ [^>^] | [}\n*^]]] 

Затем, помещая их в grep:

 grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] * 

Очевидно, что это не работает ™. Может ли кто-нибудь научить меня исправлять ошибки? Благодарю.

Это хороший файл:

 <?php ?> 

Вот так:

 <?php function someFunc(){ } ‏ 

И это тоже хорошо:

 #!/usr/bin/php -q <?php ?> 

Ведущий HTML в порядке:

 <html> <?php echo '</html>'; ?> 

Трейлинг HTML тоже хорош:

 <?php echo '<html>'; ?> </html> 

Это плохо (ведущая новая строка):

 ‏ <?php ?> 

Это тоже плохо (ведущее пространство):

 ‏ <?php ?> 

Это плохо также (завершение новой строки):

 <?php ?> ‏ 

Related of "Найти файлы PHP с вложенными пробелами"

Выражение выражения очень быстро, я думаю, делает то, что вы хотите. Сейчас довольно поздно, и по какой-то причине я нахожусь в stackoverflow. Несмотря на это, я надеюсь, что я получил ваш запрос.

Попробуйте это регулярное выражение /\A(?:\s+.*>|[^<#].*>\s*|<.*>\s+)\Z/s . Разъясняется здесь: http://regex101.com/r/cT7eY5

Надеюсь, эта помощь. Если я вас неправильно понял, проясните, и я попытаюсь настроить выражение.