PHP解析错误(意外的T_IF)[重复]

Posted

技术标签:

【中文标题】PHP解析错误(意外的T_IF)[重复]【英文标题】:PHP parse error (unexpected T_IF) [duplicate] 【发布时间】:2015-05-10 02:22:54 【问题描述】:

我似乎无法找到为什么我会得到一个

解析错误:语法错误,第 8 行 /Applications/XAMPP/xamppfiles/htdocs/oop/index.php 中的意外 'if' (T_IF)

我检查了是否缺少分号/括号/花括号,但找不到任何东西!这些还有其他一些文件。我也应该发布它们吗?

getInstance 是我的db 类中的静态方法) (countget 是我的 db 类中的方法)

提前致谢!

<?php

require_once 'core/init.php';

$user = DB::getInstance()->get('users', array('username', '=', 'bob'));

if(!$user->count()) 
    echo 'No user';
 else 
    echo 'OK';


?>

init.php 看起来像这样:

<?php 

session_start();

$GLOBALS['config'] = array(

'mysql' => array(
    'host' => '127.0.0.1',
    'username' => 'root',
    'password' => '',
    'db' => 'oop'),

'remember' => array(
    'cookie_name' => 'hash',
    'cookie_expiry' => 604800),

'session' => array(
    'session_name' => 'user')
);

spl_autoload_register(function($class) 
    require_once 'classes/' . $class . '.php';
);

require_once 'functions/sanitize.php';
?>

【问题讨论】:

您确定core/init.php 中没有语法错误吗?自行导航到该页面后是否出现任何解析错误? @flyingeagle413 该文件路径表明 OP 正在使用 OS X... @flyingeagle413 如果语法有效,Windows 中的 UAC 不会触发解析错误。 sanitize、init 或 dp.php 没有解析错误——仅在 index.php 中 用十六进制编辑器看看 index.php 可能是值得的。至少你会知道文件中没有意外字符。 【参考方案1】:

您的文件在第 6 行的末尾包含字节序列 0xefbbbf(恰好是 U+FEFF 的 UTF-8 编码,零宽度不间断空格):

$ hexdump -C index.txt 00000000 3c 3f 70 68 70 0a 0a 72 65 71 75 69 72 65 5f 6f |get('使用| 00000050 72 73 27 2c 20 61 72 72 61 79 28 27 75 73 65 72 |rs',数组('用户| 00000060 6e 61 6d 65 27 2c 20 27 3d 27 2c 20 27 62 6f 62 |name', '=', 'bob| 00000070 27 29 29 3b ef bb bf 0a 0a 69 66 28 21 24 75 73 |'));.....if(!$us| 00000080 65 72 2d 3e 63 6f 75 6e 74 28 29 29 20 7b 0a 09 |er->count()) ..| 00000090 65 63 68 6f 20 27 4e 6f 20 75 73 65 72 27 3b 0a |echo '无用户';.| 000000a0 7d 20 65 6c 73 65 20 7b 0a 09 65 63 68 6f 20 27 | 否则 ..echo '| 000000b0 4f 4b 27 3b 0a 7d 0a 0a 3f 3e |OK';...?>| 000000ba

很可能您的文本编辑器错误地添加了这样一个不间断的空格,因为它不知道您正在处理代码。

PHP 很乐意将其解析为一个 (n undefined) 常量的名称,因此当它遇到 if 构造(在常量之后立即在语法上无效)时会报错。

从您的文件中删除这个不间断的空间。

【讨论】:

我必须在 if 语句之前完全删除该行。可能发生了什么?为什么我以前从来没有遇到过这种情况?

以上是关于PHP解析错误(意外的T_IF)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

解析错误:语法错误,文件意外结束,期待'`' [重复]

解析错误:语法错误,意外'[',期待')' [重复]

解析错误:语法错误,文件意外结束[重复]

解析错误:语法错误,意外'->'(T_OBJECT_OPERATOR),期望')'[重复]

解析错误:语法错误,第 56 行的意外 T_FUNCTION [重复]

解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]