2017-09-12 51 views
-1

我有下面的PHP二進制字符串從PHP傳遞一個二進制字符串爲JavaScript

$buff=chr(1); 
$buff.=chr(2); 
$buff.=chr(0); 
$buff.=chr(0); 
$buff.=chr(0); 
$buff.=chr(6); 
$buff.=chr(1); 
$buff.=chr(6); 
$buff.=chr(0); 
$buff.=chr(192); 
$buff.=chr(0); 
$buff.=chr(1) 

,我想將它傳遞給我的javascript變量遵循var buf=<?=$buff?>;,但它會顯示錯誤

Uncaught SyntaxError: Invalid or unexpected token

我試圖使用fromCharCode() CharCodeAt()toString(2)在JavaScritp中進行chr轉換,但仍然得到與php的chr相同的轉換。

什麼可以解決這個問題?我該怎麼做var buf=<?= here ?>?將我的PHP字符串傳遞給JavaScript代碼,或者我如何在JavaScript中使用chr進行等效轉換。 到目前爲止,我發現的解決方案已經如上所述,但他們都沒有工作!

幫助請

感謝

+0

您可以將緩衝區編碼爲Base64並解碼客戶端。 – Robert

+0

您得到無效或意外令牌的主要原因是您沒有打開或關閉帶引號的字符串。 – Salketer

回答

0

您可能未封閉你的Javascript在script標籤?你想確保你把你的變量值放在引號中。

<?php 

$buff=chr(1); 
$buff.=chr(2); 
$buff.=chr(0); 
$buff.=chr(0); 
$buff.=chr(0); 
$buff.=chr(6); 
$buff.=chr(1); 
$buff.=chr(6); 
$buff.=chr(0); 
$buff.=chr(192); 
$buff.=chr(0); 
$buff.=chr(1) 
?> 

<script> 
var buf="<?=$buff ?>"; 
console.log(buf); 
</script> 
0

首先,你意外的標記主要是因爲你結束了這種JavaScript的一次PHP跑:

//Let's say $buff is "i am a binary string" 
var buf=<?=$buff?>; //translates to 
var buf=i am a binary string; 

這不是有效的JavaScript,我們應該附上引號內的字符串我們通常這樣做。

//Let's say $buff is "i am a binary string" 
var buf="<?=$buff?>"; //translates to 
var buf="i am a binary string"; 

這將成爲一個有效的字符串,並應該像這樣工作。如果你想讓你的二進制更確定一些不被一些時髦的未知行爲所取代,你可以使用base64對它進行編碼並用javascript解碼,但這是不必要的。

var buf = atob("<?= base64_encode($buff);?>");