Ben XML formatında yazılar olsun ve sayfamda onları dahil etmek mediawiki API'sini kullanmaya çalışıyorum. Ben temelde ?action=parse&page=Page_Name&format=xml
istekleri kullanarak bir makalenin XML gösterimini alır basit bir kod oluşturulur. Kodu aşağıdaki gibidir:
if($_GET["page"]=='') die("Page not specified (possibly direct call)");
$pagename = $_GET["page"];
$handle = @fopen("mediawiki/api.php?action=parse&page=".$pagename."&format=xml", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = $buffer.fgets($handle);
}
$buffer = html_entity_decode($buffer);
/*
echo $buffer;
*/
$xml = simplexml_load_string($buffer);
foreach($xml->parse->children() as $child){
switch($child->getName()){
case "text":
echo $child->asXML()."<br/>";
break;
case "categories":
echo "<h3>Categories this project is related to: </h3><br/>";
foreach($child->children() as $grandChild){
echo $grandChild." | ";
}
break;
}
}
fclose($handle);
}
Şimdi sorun, ben çok garip çıktı alıyorum olmasıdır. Herhangi bir <a name="" href=""></a>
<a name="" href=""/>
, hangi aşağıdaki tüm metni bir bağlantı (kapanış etiketi </a>
olmadığından sanırım) olmak yapar dönüştürülmüş olur. Bu Mozilla Firefox ve Google Chrome hem de görülmektedir. I $buffer = html_entity_decode($buffer);
, bu soruna neden şüphelenen ediyorum. html_entity_decode();
bunu önlemek için belirtmeniz gereken bir parametre var mı? Benim kod başka bir hata veya html_entity_decode();
kötüye neden olur?
(Wiki'sinin API XML çıkışını görmek için, farklı page
parametreleri ile http://en.wikipedia.org/w/api.php?action=parse&page=No_Such_Page&format=xml
deneyebilirsiniz)
OLASI ÇÖZÜM: Ürdün önerildiği gibi, JSON gitmek istemiyordu, bu yüzden bu çözüm ile geldi. Ben sadece html_entity_decode
case "text":
bloğa taşındı. Yani şimdi ben orada var echo html_entity_decode($child->asXML())."<br/>";
. Eğer bu yeterli mümkün olduğunu düşünüyor musunuz?