使用bash或php,我如何检测文件中的最后一块php是否有结束标记,而不考虑后面的换行符或空格?
这就是我到目前为止所了解的,但我不知道如何确定结束标记后面的内容是否更多是php。
#!/bin/bash
FILENAME="$1"
closed=false
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
-
错误:
<?php
$var = 'value';
-
正确:
<?php
$var = 'value';
?>
-
正确:
<?php
$var = 'value';
?><!DOCTYPE>
-
正确:
<?php
$var = 'value';
?>
<!DOCTYPE>
-
错误:
<?php
$var = 'value';
?>
<!DOCTYPE>
<?php
$var = 'something';
-
错误:
<?php
$var = 'value';
?><?php
$var = 'something';
我不及格3;因为我不知道结束标记后面的内容是否更像php。
[X] 1.false
[X] 2.true
[ ] 3.true
[ ] 4.true
[X] 5.false
[X] 6.false