电子女孩中文版手游
89.8MB · 2025-12-14
你可能已经遇到过:
Parse error: syntax error, unexpected '}' in xxx.php on line 28
这玩意最气人的是——
它不告诉你真正的错误,只告诉你“这里解析不下去了”。
别慌,这篇文章会用小白也能马上上手的方法,带你 5 分钟定位问题。
语法错误属于 PHP 最底层的错误:
就好比:
常见报错格式如下:
Parse error: syntax error, unexpected T_STRING
Parse error: unexpected T_VARIABLE
Parse error: unexpected '}'
Parse error: unexpected '='
意思是:
而且,真正的错误很可能不在报错那行,而是在它前一行!
这也是为什么大家会觉得它难查。
你照着下面的流程走,基本上能把所有 Parse error 解决掉。
我在这里预留【图1:Parse error 排查流程图】,
你要 PNG 我立刻生成。
┌────────────────────┐
│ 出现 Parse error? │
└──────────┬─────────┘
↓
┌────────────────────────┐
│ 看报错行的前一行是否漏符号 │
└──────────┬────────────┘
↓
┌─────────────────────────────┐
│ 检查括号/大括号/引号是否成对 │
└───────────┬────────────────┘
↓
┌─────────────────────────────────┐
│ 检查数组、字符串、函数结尾是否漏分号 │
└───────────┬──────────────────────┘
↓
┌──────────────────────────────────┐
│ 是否粘贴了奇怪字符(中文符号/BOM) │
└───────────┬──────────────────────┘
↓
┌────────────────────────────────┐
│ 仍未解决?把代码缩进重新格式化 │
└────────────────────────────────┘
$a = 1
$b = 2;
缺少 ;
报错行一般显示第二行。
$arr = [
'a' => 1,
'b' => 2,
];
中文逗号(!!!)
千万别小看,这种错误最烦!
示例:
if ($a > 1 {
echo "ok";
}
漏 )
echo "hello;
PHP 会一直往下“找”引号,所以错误位置一般完全不在报错行。
$arr = [
a => 11, // 少引号
'b' => 22,
];
fuction test() { }
你看得懂,PHP 看不懂。
$name = "abc"; // 前面有不可见字符
肉眼看不到,但 PHP 报错。
if($a == 1){
echo “ok”;
}
这是最容易从别人文档里粘贴出来的。
你看到这样的报错时:
syntax error, unexpected '<'
十有八九是:
解决方法:
用 Notepad++ / VSCode 保存成:
UTF-8(无 BOM)
比如:
function test() {
if ($a) {
}
或者:
function test() {
echo "hi";
}} // 多了一个
这类错误 PHP 永远解析不出来。
这里送你一个 万能定位法——新手用一次就会爱上。
假设报错:
unexpected '}' in test.php on line 40
一般不是 40 行的问题,而是:
→ 39 行漏了一个分号 / 引号 / 括号
所以第一步永远是:
看报错行的前一行。
例如:
它们会告诉你:
非常快。
在 VSCode 中:
Shift + Alt + F
格式化后:
这是最稳定的查错方式。
如果错误太深太乱,你可以:
就能定位是哪一块代码出错。
$a = 1
$b = 2;
unexpected '$b'
补 ;
if($a == 1){
echo “ok”;
}
全部替换为英文符号即可。
$arr = [
name => "jake",
];
改为:
'arr' => ...
echo "hello;
PHP 会从这一行开始报错一直到文件末尾。
修好引号即可。
class A {
function test() {}
}}
格式化后就能立刻看出多了一个 brace。
下面这些技巧是老 PHP 程序员的压箱底经验。
能看到 BOM、TAB、奇怪空格。
新错误大概率是你最近动的那几行。
例如 config.php 出现:
unexpected 'return'
多半是因为:
?> 前有 BOMPHP 的 Parse error 虽然烦,但本质上就一句话:
解决路线永远是:
照这个流程走,你 5 分钟就能找到问题。