Немного PHP кода стирает сайт WordPress - PullRequest
0 голосов
/ 14 июня 2011

Я загружаю данные динамически на сайт 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 я вижу сайт просто отлично.

Буду признателен за чей-либо экспертный совет по этому вопросу.

1 Ответ

3 голосов
/ 14 июня 2011

Код, который вы выбираете, содержит вызов document.write(), который удалит весь контент, если он вызывается после завершения загрузки страницы:

document.write("\n<P>...<\/P>");

См. Примечания на Страница MDC для 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 модификатор шаблона , поскольку в строке, которую вы пытаетесь сопоставить, есть символы новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...