PHP फ़ाइलों में व्हाइटस्पेस कभी-कभी समस्याग्रस्त होती है, इसलिए मैं उन फ़ाइलों को ढूंढने की कोशिश कर रहा हूं जो सामान्य समस्याग्रस्त मानदंडों को पूरा करते हैं। मैं उन सभी फ़ाइलों को रिकर्सिवली खोजने की कोशिश कर रहा हूं जिनमें इनमें से एक या दोनों स्थितियां हैं:व्हाईटस्पेस-इंजेक्शनिंग PHP फाइलें
1) <
या #
वर्ण से शुरू नहीं होता है।
और/या
2) एक >
चरित्र में समाप्त नहीं होता, जब तक यह एक करीबी ब्रेस जो नई-पंक्तियों की किसी भी राशि के बाद में अंत करता है।
मुझे लगता है कि पहली शर्त होगा: $[^<#]
मुझे लगता है कि दूसरी शर्त होगा: [ [^>^] | [}\n*^]]
हालांकि, ध्यान दें कि मेरी भोली regexes $
में और ^
प्रारंभ और के अंत का प्रतिनिधित्व फाइल, फ़ाइल में किसी भी लाइन के नहीं। और यहां तक कि उन लोगों के साथ, यह मानते हुए कि वे सही थे, मैं उन्हें कैसे जोड़ूं? इस तरह?
[$[^<#]] | [[ [^>^] | [}\n*^]]]
फिर, ग्रेप में उन्हें डाल: जाहिर है
grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *
, इस काम नहीं कर रहा है (टीएम)। क्या कोई मुझे गलतियों को सही करने के लिए सिखा सकता है? धन्यवाद।
यह एक अच्छा फ़ाइल है:
<?php
?>
तो यह है:
<?php
function someFunc(){
}
और यह भी अच्छा है:
#!/usr/bin/php -q
<?php
?>
अग्रणी एचटीएमएल ठीक है:
<html>
<?php
echo '</html>';
?>
ट्रेलिंग एचटीएमएल भी ठीक है:
<?php
echo '<html>';
?>
</html>
यह बुरा (प्रमुख newline) है:
<?php
?>
यह बहुत बुरा है (प्रमुख अंतरिक्ष):
<?php
?>
यह के रूप में बुरा है अच्छी तरह से (पिछली नई रेखा):
<?php
?>
इस समस्या से बचने के सबसे आसान तरीकों में से एक फाइलों के अंत में एक समापन '?>' शामिल नहीं है। यह मान्य PHP है, और पीयर कोडिंग मानक सहित कई मुख्यधारा के PHP कोडिंग मानकों में शामिल है। '?>' वाली फाइलें समाप्त करना परेशानी के लिए पूछ रहा है। –
एक विचार जिसे आप विचार कर सकते हैं: आउटपुट बफरिंग चालू करें, 'फ़ाइल शामिल करें), और देखें कि जब आप इसे शामिल करते हैं तो आउटपुट उत्पन्न होता है तो इसमें व्हाइटस्पेस अग्रणी/पिछला होता है। –
धन्यवाद फ्रैंक। हालांकि, '?>' में समाप्त होने वाली फ़ाइलें मान्य PHP फ़ाइलें हैं, बग को ट्रिगर न करें, और बहुत आम हैं। मैं इस विषय पर अन्य देवताओं के साथ बहस नहीं कर रहा हूं और अपनी कोडिंग शैली बदल रहा हूं, मैं सिर्फ मेरे लिए समस्याग्रस्त फाइलों को ढूंढने की प्रक्रिया को स्वचालित करना चाहता हूं। – dotancohen