为什么我不能在php文件中嵌入php?

时间:2012-08-19 12:29:25

标签: php ajax

  

可能重复:
  Escaping <? on php shorthand enabled server when using require

我想要的是当我向domain/xml.php发出Ajax get请求时。它返回一个XML文件,因此我可以使用httpRequest.responseXML来解析XML文件。

我做的是:

<?php
    $name = 'Just a tester';
?>

<?xml version='1.0' ?>
<name><?php echo $name ?></name>

但解析器给出了行<?xml version='1.0' ?>的错误,我认为它可能与php定界符<?php语法冲突。

如何申请网址并获取php生成的xml?

6 个答案:

答案 0 :(得分:3)

您已启用短标签。这是默认设置,从PHP 5.4开始,无论短标签设置如何,都支持所有标签。

问题是<?xml version='1.0' ?><? ?>开头和结尾,就像带有短标签的PHP一样。

为了解决这个问题:

echo "<?xml version='1.0' ?>";

在那条线上。

答案 1 :(得分:2)

为什么要尝试将PHP变量嵌入到XML中而不是使用PHP生成XML?

示例(xml.php):

<?php 
header('Content-type: text/xml; charset=utf-8');

//Your Data
$persons = array(array('name'=>'bob','age'=>20,'sex'=>'M'),
                 array('name'=>'steve','age'=>26,'sex'=>'M'),
                 array('name'=>'jen','age'=>33,'sex'=>'F'),
                 );


$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><persons/>');

foreach ($persons as $person) {
    $node = $xml->addChild('person');
    foreach($person as $key=>$value){
        $node->addChild($key, $value);
    }
}
//DOMDocument to format code output
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());

echo $dom->saveXML();

/* OUTPUT
<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person>
    <name>bob</name>
    <age>20</age>
    <sex>M</sex>
  </person>
  <person>
    <name>steve</name>
    <age>26</age>
    <sex>M</sex>
  </person>
  <person>
    <name>jen</name>
    <age>33</age>
    <sex>F</sex>
  </person>
</persons>
*/
?>

答案 2 :(得分:1)

你可以尝试:

<?php
header('Content-type: text/xml; charset=utf-8');
$name = 'Just a tester';
echo "<?xml version='1.0' ?>";
?>

<name><?php echo $name; ?></name>

答案 3 :(得分:1)

更改

echo "<?xml...?>";

echo '<'."?...?".'>';

或使用Lawerence解决方案

答案 4 :(得分:0)

您应该将您的网络服务器设置为不仅通过PHP预处理器处理PHP而且还处理XML文件。

答案 5 :(得分:-2)

您已启用短标记。这些应该在你的php.ini中禁用,搜索“short_open_tag”和“asp_tag”。

如果您的版本早于PHP 5.3.0,则可能会有效(如果您只想将其用于当前文档):

<?php ini_set('short_open_tag', 0); ?>