2008-10-05 29 views
44

Tôi đang tạo ra một tấn XML được chuyển đến một API dưới dạng biến bài đăng khi người dùng nhấp vào nút biểu mẫu. Tôi cũng muốn có thể hiển thị cho người dùng XML trước khi bàn tay.Làm thế nào để nắm bắt đầu ra PHP thành một biến?

Mã này là sorta như sau trong cấu trúc:

<?php 
    $lots of = "php"; 
?> 

<xml> 
    <morexml> 

<?php 
    while(){ 
?> 
    <somegeneratedxml> 
<?php } ?> 

<lastofthexml> 

<?php ?> 

<html> 
    <pre> 
     The XML for the user to preview 
    </pre> 

    <form> 
     <input id="xml" value="theXMLagain" /> 
    </form> 
</html> 

XML của tôi đang được tạo ra với một vài vòng lặp while và các công cụ. Sau đó nó cần được hiển thị ở hai nơi (xem trước và giá trị biểu mẫu).

Câu hỏi của tôi là. Làm thế nào để nắm bắt được XML được tạo ra trong một biến hoặc bất cứ điều gì vì vậy tôi chỉ phải tạo ra nó một lần và sau đó chỉ cần in ra như apposed để tạo ra nó bên trong xem trước và sau đó một lần nữa bên trong giá trị biểu mẫu?

Trả lời

84
<?php 
ob_start(); 
?> 
<xml/> 
<?php 
$xml = ob_get_clean(); 
?> 
<input value="<?php echo $xml" ?>/> 
+14

@Jleagle $ xml = ob_get_clean() sẽ trả buffert đầu ra và đầu ra sạch. Về cơ bản nó thực hiện cả ob_get_contents() và ob_end_clean() – jamietelin

+0

Bạn có thể lồng ghép chúng không? –

36

Đặt này lúc khởi động của bạn:

ob_start();

Và để có được những bộ đệm trở lại:

$value = ob_get_contents(); 
ob_end_clean();

Xem http://us2.php.net/manual/en/ref.outcontrol.php và các chức năng cá nhân để biết thêm thông tin.

8

Có vẻ như bạn muốn PHP Output Buffering

ob_start(); 
// make your XML file 

$out1 = ob_get_contents(); 
//$out1 now contains your XML 

Lưu ý rằng sản lượng đệm dừng sản lượng từ được gửi đi, cho đến khi bạn "tuôn" nó. Xem Documentation để biết thêm thông tin.

1

Bạn có thể thử này:

<?php 
$string = <<<XMLDoc 
<?xml version='1.0'?> 
<doc> 
    <title>XML Document</title> 
    <lotsofxml/> 
    <fruits> 
XMLDoc; 

$fruits = array('apple', 'banana', 'orange'); 

foreach($fruits as $fruit) { 
    $string .= "\n <fruit>".$fruit."</fruit>"; 
} 

$string .= "\n </fruits> 
</doc>"; 
?> 
<html> 
<!-- Show XML as HTML with entities; saves having to view source --> 
<pre><?=str_replace("<", "&lt;", str_replace(">", "&gt;", $string))?></pre> 
<textarea rows="8" cols="50"><?=$string?></textarea> 
</html> 
Các vấn đề liên quan