【问题标题】:parsing error - syntax error, unexpected T_NS_SEPARATOR [closed]解析错误 - 语法错误,意外的 T_NS_SEPARATOR [关闭]
【发布时间】:2011-09-09 22:10:43
【问题描述】:

我在 PHP 中有这一行:

$bom != b"\xEF\xBB\xBF" 

当我运行它时,我得到了错误:

Parse error: syntax error, unexpected T_NS_SEPARATOR in
C:\xampp\htdocs\MediaAlbumWeb\Utils\Utils.php on line 218

php中的T_NS_SEPARATOR是什么,为什么会出乎意料?

【问题讨论】:

  • 该行没有解析错误。如果可能,粘贴您的整个代码,或者在第 218 行之前至少粘贴几行。
  • 请显示更多与此相关的代码。
  • 只是一个疯狂的猜测:尝试删除字符串之前的b。错误消息提示命名空间
  • @codaddict 实际上,有一个解析错误:它是 b,PHP 将其视为常量,后跟一个字符串。如果在 ('.') 之间存在连接,则唯一可行的方法。尽管如此,我只是认为应该完全省略“b”。
  • @codaddict,什么...我以前从未见过这个,但我只是在我的机器上测试了它,它似乎确实有效。你有文档的链接吗?

标签: php error-handling


【解决方案1】:

您的代码中该行上方可能有一个未闭合的单引号或双引号。

引号外的b 是什么?

如果是比较,可能是这样的:

if($bom != "b\xEF\xBB\xBF")
{
 //code
}

在 PHP 中重现此错误的简单代码:

<?php
$arg = "'T';                      //this unclosed double quote is perfectly fine.

$vehicle = ( $arg == 'B' ? 'bus' : 'not a bus');

print $vehicle . "\n";            //error is thrown on this line.  

?>

运行它,它会打印一个错误:

PHP Parse error:  syntax error, unexpected T_NS_SEPARATOR in 
/var/www/sandbox/eric/code/php/run08/a.php on line 6

【讨论】:

  • // 判断文件是否有 utf-8 bom,如果有则跳过 $bom = fread($fp, 3); if ($bom != b"\xEF\xBB\xBF") rewind($fp);
【解决方案2】:

你做了很多 Python,有没有机会? b"string" 不是在 PHP 中编写字符串的有效方法,尽管它是在 Python 中。如果你只想要字节,那么你可以把字符串写成:

echo "\xEF\xBB\xBF";

这行得通。如果你想检查不等式:

if( $bom != "\xEF\xBB\xBF" ) {
}

你到底在检查什么?对于字节顺序标记?如果是这样:为什么,究竟是什么?

【讨论】:

  • 我的错:好像是 b"\xEF\xBB\xBF";在 PHP 中是有效的语法,虽然我从来不知道这一点。
  • 正在检查 bom utf 格式与否。我该如何解决这个问题?
  • 里亚兹;看来语法 is 是正确的。您介意显示其余代码吗,这似乎有问题。
  • // 判断文件是否有 utf-8 bom,如果有则跳过 $bom = fread($fp, 3); if ($bom != b"\xEF\xBB\xBF") rewind($fp);
猜你喜欢
  • 2014-04-02
  • 2011-10-26
  • 2014-09-02
  • 2014-04-26
  • 2013-10-02
  • 2023-04-09
  • 1970-01-01
  • 2013-05-13
  • 2011-06-07
相关资源
最近更新 更多