2011-06-07 94 views
3

我有這條線在PHP中:解析錯誤 - 語法錯誤,意想不到的T_NS_SEPARATOR

$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爲什麼它是意外的?

+1

該行沒有解析錯誤。如果可能的話,粘貼你的整個代碼或者在第218行之前至少有幾行。 – codaddict 2011-06-07 09:20:10

+0

請顯示一些與此相關的更多代碼。 – Gaurav 2011-06-07 09:20:30

+1

只是一個瘋狂的猜測:嘗試刪除字符串前的'b'。錯誤消息提示名稱空間雖然 – knittl 2011-06-07 09:21:59

回答

5

您的代碼中可能在該行上方有未封閉的單引號或雙引號。

什麼是引號之外的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 
+0

//確定是否文件有一個utf-8 bom並跳過它,如果它確實是 $ bom = fread($ fp,3); if($ bom!= b「\ xEF \ xBB \ xBF」) rewind($ fp); – 2011-06-07 09:32:15

0

你有很多Python嗎? b「字符串」不是用PHP編寫字符串的有效方式,儘管它是用Python編寫的。如果你只是想要字節,那麼你可以寫出字符串爲:

echo "\xEF\xBB\xBF"; 

這是行得通的。如果您想檢查不等式:

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

什麼是你反正檢查?對於一個字節順序標記?如果是這樣的話:爲什麼呢?

+1

我的不好:看來b「\ xEF \ xBB \ xBF」;在PHP中是有效的語法,但我從來不知道這一點。 – 2011-06-07 09:29:53

+0

它正在檢查bom utf格式與否。我該如何解決這個問題? – 2011-06-07 09:30:00

+0

Riaz;看起來語法*是*正確的。你介意顯示代碼的其餘部分,這似乎是一個問題。 – 2011-06-07 09:32:44

相關問題