можно ли позже поместить PHP-код внутри XML-документа? Например, могу ли я сказать <element value="<?php echo date('Y'); ?>" />
?
благодаря!
Это возможно, но я бы рекомендовал поместить его в блок CDATA , поэтому вам не нужно скрывать <
и подобные символы:
<element> <![CDATA[ <?php echo date('Y'); ?> ]]> </element>
Если вы запустите XML-файл как скрипт PHP, тогда да. Результат скрипта будет действительным XML, но файл, содержащий встроенный PHP, скорее всего, не будет корректным XML.
Чтобы заставить ваш веб-сервер выполнять PHP внутри файлов XML, измените тип .xml
MIME на application/x-httpd-php
, добавив эту строку в .htaccess
:
AddType application/x-httpd-php .xml
Теперь все файлы XML обрабатываются веб-сервером так же, как файлы PHP:
<?xml version="1.0" encoding="UTF-8"?> <servertime> <?php echo date('c'); header('Content-Type: application/xml; charset=utf-8'); ?> </servertime>
Обратите внимание, что определение header
– это исправление MIME-типа вашего файла обратно в application/xml
. В противном случае браузер будет обрабатываться как HTML, не позволяя ему отображать красивое дерево DOM (или что бы обрабатывать XML по умолчанию не было). Даже если файл не предназначен для открытия в браузере, никогда не приятно подделывать MIME-тип файла, поэтому, пожалуйста, не забудьте эту строку;)
Недостаток этого решения: теперь все XML-файлы в области доступа вашего .htaccess
будут обрабатываться как php, поэтому вам придется изменить MIME-тип любого XML-файла в той же папке через PHP. Обход проблемы: переместите ваш php-взломанный XML и .htaccess
в отдельную папку.
Конечно вы можете. У вас может быть что-то вроде: php -f yourfile.xml
.
Программа PHP может выводить любой контент, который вам нравится, однако он будет (если используется с веб-модулем, например mod_php) выводить по типу содержимого text / html по умолчанию, так что вам нужно будет сделать:
<?php header('Content-Type: application/xml; charset=utf-8'); ?>
(Замените более подходящий тип контента, если он применим).
Вам также потребуется настроить ваш веб-сервер, чтобы узнать, что файл должен обрабатываться как PHP и не использоваться как статические данные. Обычно это достигается путем предоставления файлу расширения .php . Проконсультируйтесь с руководством для своего веб-сервера и модуля PHP, если вы хотите использовать другое соглашение об именах файлов.
Да.
Используйте этот пример кода, filenamed 'example.php':
<?php ob_start(); require_once "relative/path/to/file.xml"; $xml_with_php_values = ob_get_clean(); ?>
Поместите php в файл xml так, как вы помещаете в html.
<element value="<?php echo date('Y'); ?> />