PHP怎么排插语法错误_PHP解析/语法错误;以及如何解决它们

小编典典

语法错误是什么?

PHP属于C风格和命令式编程语言。它具有严格的语法规则,遇到错位的符号或标识符时无法恢复。它无法猜测您的编码意图。

函数定义语法摘要

最重要的提示

您可以始终采取一些基本的预防措施:

使用适当的代码缩进,或采用任何高级编码样式。可读性可防止出现不正常情况。

将IDE或编辑器用于PHP并突出显示语法。这也有助于括号/括号平衡。

预期:分号

阅读手册中的语言参考和示例。两次,变得有些熟练。

如何解释解析器错误

典型的语法错误消息为:

解析错误:语法错误,意想不到的T_STRING,期待“ ;”在file.php上线 217

其中列出了语法错误的可能位置。请参阅提到的文件名和行号。

诸如此类的绰号T_STRING解释了解析器/令牌最终无法处理的符号。但是,这不一定是语法错误的原因。

同样重要的是要研究以前的代码行。通常,语法错误只是更早发生的不幸。错误行号正是解析器最终放弃处理所有错误的地方。

解决语法错误

有许多方法可以缩小和修复语法问题。

打开提到的源文件。看上面提到的代码行。

对于失控的字符串和放错位置的运算符,通常会在这里找到罪魁祸首。

从左到右阅读该行,并想象每个符号的作用。

更经常地,您还需要查看前几行。

特别是,缺少的;分号在前一行的末尾/语句中丢失。(至少从样式角度而言。)

如果错误地关闭或嵌套了{代码块,}则可能需要进一步研究源代码。使用适当的代码缩进可以简化该过程。

看看语法着色!

字符串,变量和常量都应具有不同的颜色。

运营商也+-*/.应设置不同的颜色。否则,它们可能处于错误的环境中。

如果看到字符串着色延伸得太远或太短,则说明未变色或缺少结束符”或’字符串标记。

彼此相邻的两个同色标点字符也可能带来麻烦。通常,如果运算符不是,或运算符后的括号++,那么运算符将是孤独的–。在大多数情况下,紧随其后的两个字符串/标识符是错误的。

Whitespace是您的朋友。遵循任何编码风格。

暂时中断长行。

您可以在运算符之间或常量和字符串之间自由添加换行符。然后,解析器将具体化行号以解析错误。您可以查看丢失或放错位置的语法符号,而不必查看冗长的代码。

将复杂的if语句拆分为不同的if条件或嵌套条件。

代替冗长的数学公式或逻辑链,请使用临时变量来简化代码。(更具可读性=更少的错误。)

在以下之间添加换行符:

您可以轻松识别出正确的代码,

您不确定的部分

以及解析器抱怨的行。

对长代码块进行分区确实有助于找到语法错​​误的来源。

注释掉违规代码。

如果您无法找出问题根源,请开始注释掉(并因此暂时删除)代码块。

摆脱分析错误后,您便找到了问题根源。仔细看那里。

有时您想暂时删除完整的功能/方法块。(如果大括号不匹配且代码缩进错误。)

如果无法解决语法问题,请尝试从头开始重写注释掉的部分。

作为新手,请避免使用一些令人困惑的语法构造。

三元? :条件运算符可以压缩代码并且确实有用。但这并不能在所有情况下都有助于可读性。if尽量不要使用简单的陈述。

PHP的替代语法(if:/ elseif:/ endif;)在模板中很常见,但是可以说比普通{代码}块更难遵循。

最普遍的新人错误是:

缺少;用于终止语句/行的分号。

“或的字符串引号不匹配,’以及其中的未转义的引号。

被遗忘的运算符,特别是对于字符串.连接。

(括号不平衡)。在报告的行中计数它们。它们是否相等?

不要忘记解决一个语法问题可以发现下一个语法问题。

如果您解决了一个问题,但在下面的一些代码中发现了其他问题,那么您通常走在正确的道路上。

如果在编辑新语法错误后又出现在同一行中,则您尝试的更改可能是失败的。(尽管并非总是如此。)

如果无法修复,请还原以前工作的代码的备份。

采用源代码版本控制系统。您始终可以查看diff损坏的最后工作版本的。关于语法问题,这可能会有所启发。

不可见的杂散Unicode字符:在某些情况下,您需要在源文件上使用十六进制编辑器或其他编辑器/查看器。仅查看代码无法发现某些问题。

尝试grep –color -P -n “[\x80-\xFF]” file.php查找非ASCII符号的第一种方法。

特别是BOM,零宽度空格或不间断空格,以及智能引号经常可以在源代码中找到。

请注意将哪种换行符保存在文件中。

PHP只接受\n换行符,而不接受\r回车符。

对于MacOS用户,这有时是个问题(即使在OS X上,对于配置错误的编辑器)。

当使用单行//或#注释时,通常仅是一个问题。/…/当换行符被忽略时,多行注释很少会干扰解析器。

如果您的语法错误未通过网络传输:您的计算机上发生语法错误。但是,将相同的文件在线发布不再显示。这仅意味着两件事之一:

您正在查看错误的文件!

或者您的代码包含不可见的杂散Unicode(请参见上文)。您可以轻松地找到:只需将代码从Web表单复制回文本编辑器即可。

检查您的PHP版本。并非所有语法构造在每台服务器上都可用。

php -v 用于命令行解释器

这些不一定相同。特别是在使用框架时,您将使它们匹配。

不要将PHP的保留关键字用作函数/方法,类或常量的标识符。

试错是您的最后选择。

如果其他所有方法均失败,则您始终可以搜索错误消息。语法符号不是那么容易搜索(堆栈溢出本身由SymbolHound索引)。因此,在找到相关内容之前,可能需要翻阅几页。

2020-05-26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值