PHP文件中的空白有時會出現問題,所以我試圖找到符合常見問題標準的文件。我試圖找到所有具有以下一個或兩個條件的遞歸文件:查找空白注入PHP文件
1)不以<
或#
字符開頭。
和/或
2)不以>
字符結尾,除非它在結束之後是換行的任何量的接近支架。
我認爲,第一個條件是:$[^<#]
我認爲,第二個條件是:[ [^>^] | [}\n*^]]
但是,請注意,我天真的正則表達式$
和^
代表的開始和結束文件,而不是文件中的任何行。即使這些,假設他們是正確的,我將如何結合他們呢?像這樣?
[$[^<#]] | [[ [^>^] | [}\n*^]]]
然後,他們將在grep的:
grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *
很顯然,這是行不通的(TM)。有人能教我如何糾正錯誤嗎?謝謝。
這是一個很好的文件:
<?php
?>
所以是這樣的:
<?php
function someFunc(){
}
而且這也很好:
#!/usr/bin/php -q
<?php
?>
領先的HTML是好的:
<html>
<?php
echo '</html>';
?>
尾隨HTML是罰款太:
<?php
echo '<html>';
?>
</html>
這是不好的(領導換行符):
<?php
?>
這是太糟糕(前導空格):
<?php
?>
這是壞(尾隨換行符):
<?php
?>
避免這個問題最簡單的方法之一就是在文件末尾不要包含關閉'?>'。這是有效的PHP,並且包含在許多主流PHP編碼標準中,包括PEAR編碼標準。用'?>'結尾的文件是要求麻煩的。 –
你可能會考慮一個想法:打開輸出緩衝,include()這個文件,看看它包含它的輸出是否有前/後空格。 –
謝謝弗蘭克。然而,以'?>'結尾的文件是有效的PHP文件,不會觸發錯誤,並且非常常見。我不會和其他開發者討論這個主題,並改變他們的編碼風格,我只是想自動爲我找到有問題的文件。 – dotancohen