XML doldurmak için PHP script kullanarak

6 Cevap php

Hepimizin Form sonuçlarını görüntüleme gibi görevleri yapmak için HTML sayfalarında "gömme" PHP ile tanıdık, ama bu görüntüler bir şekilde nasıl yapılabilir XML?

Örneğin, ben yazdım eğer:

<?xml version='1.0' ?>
<Response>
  <?php
        $body = $_GET['Body'];
        $fromPh = $_GET['From'];
        echo "<Msg>Your number is: $fromPh, and you typed: $body.</Msg>"
  ?>
</Response>

Ben bildiren bir mesaj alıyorum "parse error, unexpected T_STRING on line 1". Herhangi bir yardım veya öğreticiler mutluluk duyacağız.

6 Cevap

Çiftleşmiş XML ve HTML arasında büyük bir fark vardır.

<Response>
    <Msg>
        Your number is: <?php echo htmlspecialchars($_GET['From']); ?>
        and you typed: <?php echo htmlspecialchars($_GET['Body']); ?>
    </Msg>
</Response>

PHP kurulum PHP kodu olarak (kendi yani, sadece <? yerine <?php) ", kısa etiketler" izin verecek şekilde yapılandırılmış ise, XML Bildirgesi o kadar yolculuk edecek . Bu hataya neden budur.

Eğer kısa etiketleri devre dışı bırakarak bu sorunu çözebilirsiniz ederken, bunun yerine ya da <?xml beyanı kaldırmak için muhtemelen en iyisidir. Zaten bir XML dosyasında bir XML bildirimi (XML 1.1 kullandığınız sürece, ya da genel olarak kaçınmak istediğimiz UTF-8 olmayan bir karakter kodlaması,) dahil etmek için hiçbir sebep yoktur.

Sadece HTML gibi, aksi takdirde biçimlendirme bozulur (öznitelik değerlerinde ve tırnak) < ve & karakterleri kaçmak gerekir. Bu HTML için olduğu gibi htmlspecialchars XML gibi iyi çalışır. (Sen yazarak azaltmak için, echo htmlspecialchars yapmak için daha kısa bir adla bir işlev tanımlamak isteyebilirsiniz.)

Size ilk satırı değiştirebilir:

<?php echo '<?xml...'; ?>

Eğer istenirse bu sorunu çözecek, ayrıca php shorttags disbale olabilir.

Ayrıca aşağıdaki yapabilirdi:

<?php
$body = $_GET['Body'];
$fromPh = $_GET['From'];
echo <<<XMLCODE
<?xml version='1.0' ?>
<Response>
  <msg>Your number is: $fromPh, and you typed: $body.</Msg>
</Response>
XMLCODE;
?>

Sen ilk soru işareti ve xml arasında bir boşluk yok gerekir: PHP <? görüyor ve <?php için steno olması amaçlanmıştır varsayar.

Birkaç paragraf aşağı bakın this tutorial on embedding PHP:

Bir XML işleme yönergesi işlemek için bazı uygulama için bir XML belgesinde gömülü bir komut. Tüm XML işleme direktifler şeklinde:

Ifadesi açılır ve iç içe parantez ve soru işaretleri ile kapatır ve bu the name of the application being referenced must come right after the first question mark, with no space before it dikkat edin. Uygulama için bilgiler kısa bir açıklama olabilir, ya da olabilir, PHP durumunda, sayfalar ve sayfalar için gidebilirsiniz.

Vurgu benimdi.

: Ayrıca sizin için vb kaçan gerekli verileri sağlayacak PHP'nin XML sınıfları (http://www.php.net/manual/en/book.xmlwriter.php) kullanın

<?php

// Your datas from somewhere
$fromPh = '867-5309';
$body = 'The quick brown fox jumped over the <properly encoded?> dog.';

$writer = new XMLWriter();

$writer->openMemory();
$writer->setIndent(true);
$writer->setIndentString(' ');
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('Response');
$writer->writeElement('Msg', 'Your number is: '.$fromPh.', and you typed: '.$body);
$writer->endElement();
$writer->endDocument();

print $writer->outputMemory();

Çıktı:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
 <Msg>Your number is: 867-5309, and you typed: The quick brown fox jumped over the &lt;properly encoded?&gt; dog.</Msg>
</Response>

<? xml bu yüzden onun <?xml arasındaki boşluğu kaldırmak

echo echo olmalıdır echo. Temel sözdizimi öğrenin.