2015-12-29 10 views
2

Я пытаюсь сделать специальную веб-страницу «echo» всей новой HTML-страницей, «перезаписывая» все, что установлено на «запрошенной странице». Предположим, что в нем есть какая-то форма контента, я хочу, чтобы страница «эхом» полностью заменила ее, <head> теги и все такое.
Подобная концепция используется (из того, что я понимаю) различными двигателями шаблонов. Однако они используют структурированный HTML и заполняют его данными, между тем мне нужно динамическое создание структуры HTML в файле, которое будет агрегировано в строку, а затем «создано» в HTML, который будет отображаться для пользователя.Php echo целая страница HTML override

<?php 
    $htmlcontent = "\n"; 
    $htmlcontent .= "<html>\n"; 
    $htmlcontent .= "<head>\n"; 
    $htmlcontent .= "<style> body {\n"; 
    $htmlcontent .= "   background-color: red;\n"; 
    $htmlcontent .= "  }\n"; 
    $htmlcontent .= "</style>\n"; 
    $htmlcontent .= "</head>\n"; 
    $htmlcontent .= "<body>\n"; 
    $htmlcontent .= "<div style=\"background-color:yellow; width:200px; height:200px; position:absolute\"> Some text </div>\n"; 
    $htmlcontent .= "<script>\n"; 
    $htmlcontent .= "alert(\"script has run!\");\n"; 
    $htmlcontent .= "</script>\n"; 
    $htmlcontent .= "</body>\n"; 
    $htmlcontent .= "</html>\n"; 

    echo ($htmlcontent); //EDIT: removed eval() from here 
?> 

EDIT:удалена Eval(), чтобы избежать путаницы с новыми людьми, поставить комментарий для тех, кто читает Выскажи, чтобы не запутаться отсутствием Eval в коде.

Это содержимое страницы .php, на которую я нацеливаюсь с моим запросом. Идея заключается в том, чтобы быть в состоянии получить совершенно новую страницу в браузере, что происходит, а не ошибка, которую следует (теперь не имеет значения, потому что Eval удаляется):

Parse error: syntax error, unexpected '<' in D:\wamp\www\learningPHP\index.php(30) : eval()'d code on line 2

Если я просто использовать:

echo $htmlcontent; 

затем я получаю страницу, чтобы распечатать мою структуру HTML, однако она все печатается в теле пустой HTML-страницы, а не структурируется так, как мне это нужно.

Ответ:

Этот вопрос был одним из плагинов для NetBeans. После ручного редактирования .php-файла с сервера он обнаружил, что он несет стандартные HTML-теги документа, а также некоторые комментарии к нему. Удаление этих исправлено.

+0

'echo',' Eval ', ты даже понимаешь, что ты делаешь? –

+0

Почему вы используете eval? – durbnpoisn

+0

PHP генерирует HTML, поэтому просто выводить все, что вы хотите. Если он выводит ваш PHP, возможно, у вас нет PHP, установленного на вашем компьютере/сервере; или обработчик не настроен? В любом случае «echo eval» ошибочен в этом случае; 'echo $ htmlcontent;' должно быть то, что вы используете. – chris85

ответ

1

Я прочитал ваш вопрос и ваши комментарии.

Я думаю, что вам нужно ob_start();, это просто и легко:

ob_start(); //write this line in start of your project, 
//In header file. 

//Here is normal html/css/js/PHP. write your html or echo any things... 
// Normal code is here.... 

//e.g: 
<html><body>Hello world <?php date("y"); ?> </body></html> 

$html = ob_get_clean(); //write this line at the end of file.. in footer file 
//now your html save in $html variable, 
now use replace functions to replace any thing from your html.. :) 

//at the end, 
echo $html; 

ob_start();, когда вы не используете эту функцию ничего покажет в браузере, пока вы не вторят результата

$html = ob_get_clean(); 
echo $html; 
+0

Я постараюсь поиграть с ним, но моя проблема намного проще в природе. Во-первых, нет файлов header.php, main.php и footer.php. Это один и тот же файл, и мне не нужно, чтобы он был чем-то другим (он не будет использоваться как есть, а скорее как часть гораздо более крупной системы), но я выделил этот .php-файл в конкретный поддомен (так сказать), чтобы проверить его в независимой среде. Все, что мне действительно нужно, это вывести HTML-строку всей страницы, строка уже находится в переменной, но вместо вывода всей страницы , , все это превращается в . – Dellirium

+0

Я вижу ваш снимок, который вы публикуете в других комментариях, может быть, это из вашего браузера, проверьте ваш вывод html в исходном коде браузера, щелкните правой кнопкой мыши на браузере и с открытым исходным кодом .. код вашего кода в исходном коде ..? , если не нормально, то загрузите моментальный снимок вашей реальной среды кода ... –

+0

Похоже, что окружающая среда добавляла необходимый код. Как только я вручную отредактировал файл .php с помощью блокнота ++ с сервера, он начал работать правильно. Спасибо за все твои проблемы! – Dellirium