我使用php进行卷曲请求,响应是一个完整的网站,包括doctype,html部分等。
现在我想将此代码插入到iframe中。在我的opionion中,这只能通过javascript完成。所以我回复了我的PHP代码中的javascript代码。
现在我遇到的问题是html代码包含引号和换行符。引号被addslashes php函数掩盖。我用preg_replace php函数替换了换行符。
但我总是收到错误"未终止的字符串文字"。您可以看到此页面使用的错误,例如:萤火虫:
iframe应显示在名为" Hotelbewertungen"的最下面部分。
感谢您的任何建议。
答案 0 :(得分:1)
尝试做这样的事情时
...
document.write("<!DOCTYPE html lang=\"de\"> ... </script></body></html>");
我们不应在您的字符串文字中包含<script>...</script>
标记。 HTML将捕获结束脚本标记并将其解释为有效标记。我以前见过这个问题,一个解决方案是&#34;分手&#34;脚本将字符串标记为&#34;&lt;&#34; +&#34; script&gt;&#34;和&#34;&lt;&#34; +&#34; / script&gt;&#34;在JavaScript中。
但是,更好的解决方案是在PHP端使用base64_encode(),然后在JavaScript端使用window.atob()(所有主流浏览器都使用supported)。这样可以防止标记干扰您的JavaScript。
PHP文件:
....
document.write(window.atob("<?php echo base64_encode($cURLString);?>"));
呈现HTML:
....
document.write(window.atob("2lkZSB0aGUgSmF2YVNjcmlwdC4NCg0KSG93ZXZlc
iwgYSBiZXR0ZXIgc3VnZ2VzdGlvbiBpcyB0byB1c2UgYmFzZTY0X2VuY2234nj234
9kZSgpIG9uIHRoZSBQSFAgc2lkZSwgdGhlbiB1c2UgYXRvYigpIG9uIHRoZSBKYX3
ZhU2NyaXB0IHNpZGUuIFRoaXMgd2lsbCBwcmV2ZW50IG1hcmt1cCBmcm9tIGludGV
aW5nIHdpdGggeW91ciBKYXZhU2NyaXB0Lg=="));
答案 1 :(得分:0)
为什么这么复杂?
您拥有要在iframe中显示的网站的网址,只需执行此操作:
<iframe src="<?php echo $url; ?>"></iframe>
或者你有一个特别的理由试图以这种非常复杂的方式做到这一点吗?
<强>更新强>: 如果你想摆脱滚动条css是你的朋友: http://jsfiddle.net/fnnuv8n2/