2012-09-19 40 views
1

我正在收集表單信息,我必須將這些數據發佈到XML格式的URL中。所以我把XML放到一個後置字符串中並使用cURL來執行這個帖子。我如何將正確的表單字段回顯到XML中?在ProjectId中,我放了我認爲是代碼的東西,但Notepad ++沒有將它顯示爲有效的PHP,所以我認爲這是錯誤的。謝謝!在XML中迴應PHP變量

$post_string = ' 

<?xml version="1.0" encoding="UTF-8" ?> 

<Ping vid="" sid="">     
    <ProjectInfo> 
     <ProjectId><? echo $projectid; ?></ProjectId> 
     <SubProject></SubProject> 
    </ProjectInfo> 
</Ping> 


'; 

我使用這個鏈接來弄明白:http://www.codediesel.com/php/posting-xml-from-php/

回答

8

只需將字符串

$post_string = ' 

<?xml version="1.0" encoding="UTF-8" ?> 

<Ping vid="" sid="">     
    <ProjectInfo> 
     <ProjectId>' . $projectid . '</ProjectId> 
     <SubProject></SubProject> 
    </ProjectInfo> 
</Ping> 


'; 
+0

謝謝!如果我想在vid =「」中添加一個變量......我可以只使用vid =「$ vid」,還是將它連接起來? – Paul

+0

你也連接在一起。單引號字符串將不會解析PHP變量,因此美元符號將是字面美元符號。如果你想把變量保留在沒有連接的引號中,這就是所謂的插值,而且你需要使用雙引號 - 但是你需要在XML內部轉義所有的雙引號,這是非常多的工作。 – AlienWebguy

1

沒有必要再次打開<?php ?>標籤,正好連接字符串值。

$post_string = ' 

<?xml version="1.0" encoding="UTF-8" ?> 

<Ping vid="" sid="">     
    <ProjectInfo> 
     <ProjectId>'. $projectid.'</ProjectId> 
     <SubProject></SubProject> 
    </ProjectInfo> 
</Ping> 


'; 
2
$post_string = ' 

<?xml version="1.0" encoding="UTF-8" ?> 

<Ping vid="" sid="">     
    <ProjectInfo> 
     <ProjectId><![CDATA['. $projectid.']]></ProjectId> 
     <SubProject></SubProject> 
    </ProjectInfo> 
</Ping> 


'; 

在某些情況下,如果你的變量包含像「&」和「<」前後需要變量後添加CDATA標籤的人物,因爲他們打破了XML。在你的情況下,$ projectid似乎是一個id(int),但是也許你會在你的腳本中使用包含這些字符的更多變量,注意在這種情況下CDATA標記的重要性。

+0

感謝您的提示!現在所有傳遞的變量都只是int或普通字符,但我會使用CDATA來養成它的習慣。特別是如果它不會傷害。 – Paul

1

只是另一種用法。嘗試使用這種風格,將格式良好的xml字符串提供給php變量。

$post_string =<<<XML 
<Ping vid="" sid="">     
<ProjectInfo> 
    <ProjectId>$projectid</ProjectId> 
    <SubProject></SubProject> 
</ProjectInfo> 
</Ping> 
XML;