问题描述
|
我正在将数据动态加载到WordPress网站中:
http://cybart.com/cywp/
从另一个站点:
http://youngeagles.com/factzone/thisday.asp
为此,我将以下代码插入wordpress页面:
<div id=\"this_day_in_history\">
<h3>This Day in Aviation History</h3>
<?PHP
$contents=file_get_contents(\'http://www.youngeagles.com/thisday/absolutecr.asp?z=1\');
$convertedcontents=iconv(\"ISO-8859-1\",\"UTF-8//IGnorE//TRANSLIT\",$contents);
echo \"<script type=\\\"text/javascript\\\">\".$convertedcontents.\"</script>\";
?>
</div>
出于某种原因,此PHP代码段会擦除整个页面,将其保留为空白,仅显示其加载的数据。效果似乎只发生在Firefox和Chrome中;在Safari和IE中,我可以看到该网站。
对此,我将不胜感激。
解决方法
您正在获取的代码包含对
document.write()
的调用,如果在页面加载完成后调用该内容,它将清除所有内容:
document.write(\"\\n<P>...<\\/P>\");
有关更多信息,请参见MDC页面上的note以获得document.write。
您可能需要手动解析http://www.youngeagles.com/thisday/absolutecr.asp?z=1中的代码,例如:
<div id=\"this_day_in_history\">
<h3>This Day in Aviation History</h3>
<?php
$contents=file_get_contents(\'http://www.youngeagles.com/thisday/absolutecr.asp?z=1\');
$convertedcontents=iconv(\"ISO-8859-1\",\"UTF-8//IGNORE//TRANSLIT\",$contents);
if( preg_match(\'#^document\\.write\\(\"(.+)\"\\);$#s\',$convertedcontents,$matches) )
{
echo stripslashes(str_replace(\'\\\\n\',\'\',$matches[1]));
}
else
{
// TODO Format of $convertedcontents has changed. Log for developer review.
}
?>
</div>
请注意,您将需要使用s
模式修饰符,因为您要匹配的字符串中包含换行符。