2017-09-13 67 views
1

我有下面的代碼:如何通過JavaScript函數對PHP字符串進行編碼以用作字符串?

<iframe id="uniqueId" frameborder="0" width="100%" height="100%"></iframe> 
<script> 
    var iframeObject = document.getElementById("uniqueId"); 
    var iframeContent = iframeObject.contentWindow.document; 
    iframeContent.open(); 
    iframeContent.write("<?php echo $htmlString ?>"); 
    iframeContent.close(); 
</script>; 

我試圖插入用戶生成的HTML(元數據,<html><head><body><script> S和所有),存儲爲PHP變量的字符串$htmlString,放入#uniqueId iframe以供瀏覽器/客戶端呈現。

我真的很難找出正確的方法來安全地轉義/編碼這個字符串的HTML用於我寫的JavaScript。

在PHP的一面,我已經試過$htmlStringhtmlspecialchars()htmlentities()json_encode(),和一些簡單的str_replace() S,但他們沒有做什麼,我需要他們。有什麼我失蹤?

+0

如何使用'htmlspecialchars()'和'str_replace()'如'str_replace(array(「\ r」,「\ n」),「」,htmlspecialchars($ htmlString));''。 – imtheman

+0

@imtheman,我會在str_replace中包含反斜槓('「\\」')。如果'$ htmlString'後面的雙引號被轉義,可以得到一些時髦的結果。 – jh1711

回答

0

感覺啞巴;問題出在我的JavaScript的語法上。一旦我解決了這些問題,echo json_encode($htmlString)就做到了。

0

我認爲你應該保存一個代碼到一個文件,並從另一個域的src屬性加載它。

至少jsfiddle.net使用這種方式。

+0

@ jh1711是的,你說得對。在閱讀問題時,我誤解了這些要求。我已經更新了答案。 – Talgat

+0

太好了。我不知道如果單獨的文件在所有情況下都有幫助,但至少瀏覽器不會從不同來源收集壞的Javascript,並嘗試運行他們收集的任何內容。 – jh1711

+0

@ jh1711如果使用與jsfiddle不同的域,則默認的相同原始策略無法訪問父項。所以它必須是安全的。 – Talgat

相關問題