2011-09-29 59 views
0

我將介紹開始爲這實際上應該做的事情,從一個動作運行存儲在HTML5永久存儲大量變量...在PHP腳本

抓取網頁的全部內容,轉成字符串,並保存到持久性存儲中。然而,由於某種原因,它只是......不會?

我用php的html實體,然後JSON Stringify,但它只是無法正常工作。

我的代碼如下...

//arrays set above 

$url = "http://www.google.co.uk"; 

$handle = fopen($url, "r"); 

$contents = stream_get_contents($handle); 

$contents = htmlentities($contents); 

echo "<script lang='text/javascript'>var dataString = JSON.stringify('".$contents."'); tokens[".$t." = ".$rowtokens[5]."]; toStore[".$t." = dataString]; alert('CONTENT'); </script>"; 

編輯:

該源代碼將呈現以下

<script lang='text/javascript'>tokens[0 = tokenvalue here]; toStore[0 = "&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD X... 
//All the rest of the html of the page. 
"];localStorage.setItem(token[0], toStore[0]);</script> 
+0

您遇到了什麼問題?什麼錯誤信息?另外,請考慮使用PHP的'json_encode()'在PHP端執行字符串化。 –

+0

我沒有想過/嘗試過。在查看頁面源代碼時,它只是呈現整個文本,顯然是用html實體格式化的,但不會將任何關鍵詞添加到商店中... –

回答

2

你的意思是:

tokens['".$t."'] = '".$rowtokens[5]."'; 

目前,它正在評估於:

tokens[something = test]; 

這是無效的,你想要什麼沒有做:

  • 一切屬性名內部發生;什麼都沒有設置
  • 您沒有報價這將可能陷入困境的事情

如果你的代碼返回此:

<script lang='text/javascript'>tokens[0 = tokenvalue here]; toStore[0 = "&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD X... 
//All the rest of the html of the page. 
"];localStorage.setItem(token[0], toStore[0]);</script> 

那麼它是無效的:

  • 這是<script type='text/javascript'>
  • 我不知道你的意思是0 = tokenvalue here(你存儲的東西號碼爲0,這是不可能的)。你不是說tokens[0] = tokenvalue
  • 有換行,所以你應該刪除它們,你現在有一個未終止字符串
+0

問題實際上並不在於令牌部分。這是渲染罰款。它在toStore部分... –

+0

@Graeme Leighfield:什麼是'tokens'和'toStore'?如果它們是函數,則應該使用'()'而不是'[]'。 – pimvdb

+0

它們是數組,$ t是引用該數組中鍵的計數器。 –