A volte lo spazio bianco nei file PHP è problematico, quindi sto cercando di trovare file che soddisfino i più comuni criteri problematici. Sto cercando di trovare tutti i file in modo ricorsivo che hanno una o entrambe queste condizioni:Trova file PHP per iniettare spazi bianchi
1) Non inizia con un carattere <
o #
.
e/o
2) non termina in un carattere >
, a meno che finisce in un tutore stretta che è seguita da qualsiasi quantità di nuove righe.
Penso che la prima condizione sarebbe: $[^<#]
Penso che la seconda condizione sarebbe: [ [^>^] | [}\n*^]]
Si noti tuttavia che nelle mie regex ingenui $
e ^
rappresento l'inizio e la fine del file, non di alcuna riga nel file. E anche con quelli, supponendo che fossero corretti, come li combinerei? Così?
[$[^<#]] | [[ [^>^] | [}\n*^]]]
Poi, mettendoli in grep:
grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *
Ovviamente, questo non funziona (tm). Qualcuno può insegnarmi come correggere gli errori? Grazie.
Questo è un buon file:
<?php
?>
Quindi è questo:
<?php
function someFunc(){
}
E questo è un bene troppo:
#!/usr/bin/php -q
<?php
?>
Leading HTML va bene:
<html>
<?php
echo '</html>';
?>
Trailing HTML è troppo bella:
<?php
echo '<html>';
?>
</html>
Questo è male (che porta a capo):
<?php
?>
Questo è troppo male (spazio iniziale):
<?php
?>
Questo è male come bene (nuova riga finale):
<?php
?>
Uno dei modi più semplici per evitare questo problema è NON includere una chiusura '?>' Alla fine dei file. Questo è valido PHP ed è incluso in molti standard di codifica PHP, incluso lo standard di codifica PEAR. La fine dei file con '?>' È un problema. –
Un'idea che potresti prendere in considerazione: attivare il buffering dell'output, 'include()' il file e vedere se l'output che genera quando lo includi ha spazi iniziali o finali. –
Grazie, Frank. Tuttavia, i file che terminano con '?>' Sono file PHP validi, non attivano il bug e sono molto comuni. Non ho intenzione di discutere con altri sviluppatori sull'argomento e modificare il loro stile di codifica, voglio solo automatizzare il processo di ricerca di file problematici per me. – dotancohen