PHP dosyalarındaki boşluk bazen sorunludur, bu yüzden ortak sorunlu kriterleri karşılayan dosyaları bulmaya çalışıyorum. Bu koşullardan birini veya her ikisini de içeren yinelemeli dosyaları bulmaya çalışıyorum:Beyaz boşluklu PHP dosyalarını bulun
1) <
veya #
karakteriyle başlamıyor. Bu yeni satır herhangi bir miktarda izler yakın bir mesnet içinde son yapmazsa
ve/veya
2), bir >
karakter bitmez.
Ben ilk şartı olacağını düşünüyorum: [ [^>^] | [}\n*^]]
Ancak, benim naif regexes $
unutmayın ve ^
başlangıcını ve sonunu temsil: $[^<#]
Ben ikinci şartı olacağını düşünüyorum dosya, dosyadaki herhangi bir satır değil. Ve onlarla bile, doğru olduklarını varsayarsak, onları nasıl birleştiririm? Öyle mi?
[$[^<#]] | [[ [^>^] | [}\n*^]]]
Sonra grep koymadan:
grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *
Açıkçası, bu (tm) Çalışmıyor edilir. Birisi bana hataların nasıl düzeltileceğini öğretebilir mi? Teşekkürler.
Bu iyi dosyasıdır:
<?php
?>
Yani şudur:
<?php
function someFunc(){
}
Ve bu çok iyi:
#!/usr/bin/php -q
<?php
?>
Öncü HTML gayet:
<html>
<?php
echo '</html>';
?>
Firar HTML çok ince:
<?php
echo '<html>';
?>
</html>
Bu (lider satır) kötü:
<?php
?>
Bu çok kötü (lider boşluk):
<?php
?>
Bu kadar kötü iyi (sondaki satır):
<?php
?>
Bu sorunu önlemenin en kolay yollarından biri, dosyaların sonunda bir '? Bu geçerli bir PHP'dir ve PEAR kodlama standardı dahil olmak üzere birçok ana PHP kodlama standardına dahil edilmiştir. "?>" Ile biten dosyaları sorunluyor. –
Göz önünde bulundurmanız gereken bir fikir: çıktı arabelleklemesi, 'include()' dosyasını açın ve eklediğinizde çıktının oluşturulup oluşturulmadığına ya da son noktaya sahip olup olmadığına bakın. –
Teşekkür ederim Frank. Ancak,?> 'Ile biten dosyalar geçerli PHP dosyalarıdır, hatayı tetiklemez ve çok yaygındır. Konuyla ilgili diğer devlerle tartışmayacağım ve kodlama stilini değiştirmeyeceğim, sadece benim için sorunlu dosyaları bulma sürecini otomatikleştirmek istiyorum. – dotancohen