1
使用bash或php,如何檢測文件中最後一個php塊是否有結束標記,而不管尾隨換行符或空格?如何檢測關閉php標籤?
這就是我到目前爲止,但我無法弄清楚如何確定是否結束標記之後是更多的PHP或不。
#!/bin/bash
FILENAME="$1"
closed=false
# just checking the last 10 lines
# should be good enough for this example
for line in $(tail $FILENAME); do
if [ "$line" == "?>" ]; then
closed=true
else
closed=false
fi
done
if $closed; then
exit 1
else
exit 0
fi
我用測試運行器腳本編寫了一些測試。
#!/bin/bash
for testfile in $(ls tests); do
./closed-php.bash tests/$testfile
closed=$?
if [ $closed -eq 1 -a "true" == ${testfile##*.} ] ||
[ $closed -eq 0 -a "false" == ${testfile##*.} ]; then
echo "[X] $testfile"
else
echo "[ ] $testfile"
fi
done
您可以clone these files,但這是我到目前爲止。
.
├── closed-php.bash
├── test.bash
└── tests
├── 1.false
├── 2.true
├── 3.true
├── 4.true
├── 5.false
└── 6.false
FALSE:
<?php $var = 'value';
TRUE:
<?php $var = 'value'; ?>
TRUE:
<?php $var = 'value'; ?><!DOCTYPE>
TRUE:
<?php $var = 'value'; ?> <!DOCTYPE>
FALSE:
<?php $var = 'value'; ?> <!DOCTYPE> <?php $var = 'something';
FALSE:
<?php $var = 'value'; ?><?php $var = 'something';
我沒有3 & 4,因爲如果我想不通在結束標記更多的PHP之後。
[X] 1.false
[X] 2.true
[ ] 3.true
[ ] 4.true
[X] 5.false
[X] 6.false
只是好奇 - 你需要什麼?混合PHP和標記是一個文件是壞事。一旦這個問題得到解決,你應該只需要使用php文件,並且建議不要使用關閉'?>'無論如何都是這樣的情況 –
除非插入PHP – Jonathan
'$ str =「?>」'我不能請記住,這將是完全可能的 – 2016-07-14 23:01:30