Как напечатать код, сгенерированный какой-то функцией в php? - PullRequest
0 голосов
/ 24 ноября 2011

В моей CMS есть код, который печатает содержимое: <?php print $content ?> Я хотел бы вывести фактический код php и html за $content, в идеале в браузере.Здесь я имею в виду не результат в браузере, а реальный код, стоящий за ним. Возможно ли это вообще?

РЕДАКТИРОВАТЬ: Просто, чтобы объяснить далее: мне нужно напечатать исходный код $ содержимого.По сути, эта переменная создает HTML и PHP-контент.Я хотел бы увидеть код, который он производит, изменить его и заменить $ content на мой собственный код.В идеале исходный код должен быть напечатан в браузере, есть ли какая-нибудь функция php, которая это делает?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Сначала установите модуль Devel , у него есть замечательная функция под названием dpm(), которая будет печатать содержимое любой переменной в область сообщений Drupal.

Затем вам нужно перейтив файл template.php вашей темы и внедрите hook_preprocess_page():

function mytheme_preprocess_page(&$vars) {
  dpm($vars['content']);
}

, который распечатает массив $content до его преобразования в строку.В той же функции предварительной обработки вы также можете изменить $vars['content'] по своему усмотрению, и изменения будут отражены в $content в page.tpl.php.

Надеюсь, что поможет

0 голосов
/ 24 ноября 2011

Что ж, если вы просто хотите увидеть html-источник для $ content, вы должны просто использовать htmlspecialchars:

echo htmlspecialchars($content);

http://php.net/htmlspecialchars или http://php.net/htmlentities

0 голосов
/ 24 ноября 2011

Что вы подразумеваете под «кодом»? Я думаю, что то, что вы хотите сделать, невозможно, если вы не создадите какой-то квин, невозможно вывести фактический php-код php-файла при запуске.

Если $content что-то вроде:

$content = 3 + 4 + 5;

echo $content; выдаст 12 да? Но я так понимаю, вы хотите вывести 3 + 4 + 5 или что-то в этом роде. Дело в том, что PHP (хотя он не кажется похожим на него) скомпилирован. В этом тривиальном примере 3 + 4 + 5 точно не хранится нигде в вашей скомпилированной программе, он хранится как 12 (поскольку он статический). Более сложные строки кода будут храниться в виде указателей, значений и т. Д., Все это в хорошо запутанном машинном коде. Чтобы вернуться к 3 + 4 + 5, необходимо прочитать входной файл и вывести соответствующую строку, что сложно (подумайте, что произойдет, если вы добавите или удалите несколько строк, или как ваша работающая программа знает, где она находится в исходном файле, или даже если это в правильном исходном файле).

tl; dr: это невозможно.

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