PHP код в переменной как обычный текст

158
07 сентября 2017, 19:15

Здравствуйте! Пытаюсь сделать автоматическое создание страниц и при создании записываю туда небольшой PHP код:

$fp = fopen($file, "w"); 
        fwrite($fp, "
                <? $arr = $_SERVER['REQUEST_URI'];
                    $resArr = explode('/', $arr);
                    //var_dump($resArr);
                    $str = '';
                    $length = count($resArr);
                ?>
                <div> ...
              ");

Проблема в том что из-за кучи скобок и PHP кода, ругается обработчик. Можно сделать так чтобы обработчик воспринимал этот код, как простой текст?

Answer 1

Nowdoc ¶

Nowdoc - это то же самое для строк в одинарных кавычках, что и heredoc для строк в двойных кавычках. Nowdoc похож на heredoc, но внутри него не осуществляется никаких подстановок. Эта конструкция идеальна для внедрения PHP-кода или других больших блоков текста без необходимости его экранирования. В этом он немного похож на SGML-конструкцию <![CDATA[ ]]> тем, что объявляет блок текста, не предназначенный для обработки.

Nowdoc указывается той же последовательностью <<<, что используется в heredoc, но последующий за ней идентификатор заключается в одинарные кавычки, например, <<<'EOT'. Все условия, действующие для heredoc идентификаторов также действительны и для nowdoc, особенно те, что относятся к закрывающему идентификатору.

© документация

Подробнее:

  • heredoc синтаксис
  • nowdoc синтаксис

Для вашего примера:

$content = <<<'CODE'
    <? $arr = $_SERVER['REQUEST_URI'];
       $resArr = explode('/', $arr);
       //var_dump($resArr);
       $str = '';
       $length = count($resArr);
    ?>
    <div> ...
CODE; 
$fp = fopen($file, "w"); 
fwrite($fp, $content);

Однако, поскольку данный код вы планируете вставлять во множество файлов, то лучше подключите его через include, что позволить избежать проблем, когда понадобится внести изменения во все нагенерированное.

READ ALSO
Не могу добавить новые значение к существующей сессии PHP

Не могу добавить новые значение к существующей сессии PHP

У меня есть массив в сессииВ этом массиве находятся данные о первом товаре на который я нажал (имя, цена, кол-во)

184
Получить html код php

Получить html код php

Здравствуйте, есть страницаНужно получить ее html код

189
Oшибка: &#39;pobj&#39; was not declared in this scope [требует правки]

Oшибка: 'pobj' was not declared in this scope [требует правки]

Разбираю пример из учебника и столкнулся сразу же с ошибкой

186