堆栈溢出的第一个问题。我一直都能找到我想要的东西而不必问任何问题,但这让我很困惑。
我正在将网站升级到使用Amazon Cloud托管。作为该升级的一部分,我正在将代码部署到标记为E1服务器(开发)的位置。我认为这将是一个快速的过程,但是在PHP中使用if语句遇到了相当大的障碍。
我在php if语句中使用嵌套HTML,以向网站上的用户显示反馈。这在我以前的托管提供程序PHP版本5.3.13上非常有效,新服务器的PHP版本为5.3.28。
这是代码:
$positive_feedback = $_SESSION['letter_update_feedback'];
if($positive_feedback != "")
{
?>
<div class="positivefeedback">
<h3>
<?php
echo $positive_feedback;
$positive_feedback = "";
?>
</h3>
</div>
<?
}
$_SESSION['letter_update_feedback'] = $positive_feedback;
在新服务器上,它失败并显示以下错误:
解析错误:语法错误,第1239行的/var/www/html/viewletter.php中意外的$ end
另外,如果我从if语句中删除所有本机HTML,并用echo替换它们,则它会起作用。
$positive_feedback = $_SESSION['letter_update_feedback'];
if($positive_feedback != "")
{
echo '<div class="positivefeedback">
<h3>';
echo $positive_feedback;
$positive_feedback = "";
echo '</h3>
</div>';
}
$_SESSION['letter_update_feedback'] = $positive_feedback;
感谢您提前提供的所有帮助。
使用PHP进行编程时,网站管理员可能会遇到错误,并显示诸如parse error:syntax error,意外$ end之类的消息。此错误与PHP中的语法错误有关。导致错误的最可能原因是PHP代码中的括号缺失或不匹配。要解决PHP中缺少的括号错误,必须从头开始检查代码以进行搜索。避免错误的一种方法是在代码中使用适当的缩进。一旦正确设置了代码中的所有括号,便会解析错误:语法错误,意外的$ end。
解析错误:语法错误,意外的$ end使用PHP编程时,很可能遇到以下错误:
解析错误:语法错误,第1行的命令行代码中出现意外的$ end
是什么导致此错误?
实际上,此错误意味着PHP已经完成了对代码的分析,但是您忘记了关闭页面中或其中包含的符号。
情况:
您忘记了关闭引号,因此PHP会继续分析您的代码,直到找到引号为止。
您忘记了用括号括起来,因此从最后一次打开起,PHP会将后面的所有代码视为永无止境的块的一部分。
您忘记了关闭圆括号,因此从上一个打开的圆括号开始,PHP会将随后的所有代码视为未结束的特定块(条件,函数的参数等)的一部分。
您忘记了逗号,因此对于PHP,代码中有一条没有止境的指令。
这意味着问题可能不在错误消息中提到的那一行,因为缺少的符号可能在该点之后的任何地方。
导致此错误的代码示例。
这是导致此错误的代码的一些示例。
<?
if ($condition){
echo "true";
?>
忘记关闭报价:
<?
echo "test;
?>
忘记关闭括号:
<?
mysql_query("mysite", "logon", "thisisnotasqlserver.com" ;
?>
忘记分号:
<?
if ($test){
echo '1'
}
?>
如何解决/避免此错误这通常是由于代码的组织不当造成的。尤其要记住,要使代码缩进得好,以直观地区分不同的块。
干净代码示例
//Equivalent of array_reverse()
function inverse_table($table)
{
$ret = array();
if (is_array($table) ){
for($i=sizeof($table) - 1; $i >= 0; $i++)
{
$ret[] = $table[$i];
}
}
return $ret;
}
非缩进代码示例,更难调试:
function inverse_table($table)
{
$ret = array();
if (is_array($table) ){
for($i=sizeof($table) - 1; $i >= 0; $i++)
{
$ret[] = $table[$i];
}
}
return $ret;
}
如果遇到此错误,请注意,它不一定是代码的结尾,例如,即使文件为1000行,也可能在代码的开头就省略了赞誉。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句