2012-01-27 43 views
4
programitically產生

我做PHP編碼使用它的源代碼,我手動複製一個XML文件,它看起來像差異手動複製和PHP

<title type='text'>content I've extracted</title> 
<content type='text'>content I've extracted</content> 

現在一切都做,當我產生通過PHP編碼的內容,當我嘗試從標題和內容標籤提取的東西輸出不會生成...當我交叉檢查時,我發現PHP生成的文件(源代碼,RSS源)看起來像

<title type=\'text\'>content to be extracted </title> 
<content type=\'text\'>content to be extracted</content> 

由於存在反斜線,因此無法提取的內容,我想,我正在使用從這些標籤獲取內容

樣本PHP代碼

$titles = $entry->getElementsByTagName("title"); 
    $title = $titles->item(0)->nodeValue; 

    $descrs = $entry->getElementsByTagName("content"); 
    $descr = $descrs->item(0)->nodeValue; 

有人可以請建議我如何進行

這是PHP代碼我用於生成XML

$url='http://gdata.youtube.com/feeds/api/playlists/12345'; 
$fp = fopen($url, 'r'); 
$buffer=''; 
if ($fp) { 
while (!feof($fp)) 
$buffer .= fgets($fp, 1024); 
fclose($fp); 
file_put_contents('feed.xml', $buffer); 

我發現溶液

$buff=stripslashes($buffer); 
file_put_contents('ka.xml', $buff); 

所以stripslashes()函數刪除反斜線和它的作品

+1

不要與proken XML進行,並顯示你想要當什麼XML確實沒有幫助。你能告訴我們你是如何創建/獲取這個破碎的XML? – Wrikken 2012-01-27 13:27:51

+0

如果這是你的整個XML文件,那麼我不知道你是如何得到任何工作。你能發佈所有的XML,以及你用來加載XML的代碼嗎? – 2012-01-27 13:28:00

回答

4

看起來你已經啓用magic quotes

如果啓用了magic_quotes_runtime,那麼大多數從任何外部源(包括數據庫和文本文件)返回數據的函數都會將引號用反斜槓進行轉義。

所以當你使用fgets讀取文件時,任何引號都會被轉義。魔術引號在PHP 5.3以前不推薦使用。你不應該在腳本中使用它們。

另見http://www.php.net/manual/en/security.magicquotes.php


在一個旁註,你的方法來複制文件要複雜得多,它需要的。所有這些將工作遠程XML保存到一個文件:

$src = 'http://gdata.youtube.com/feeds/api/playlists/E6DE6EC9A373AF57?v=2'; 
copy($src, 'dest.xml'); 

$src = 'http://gdata.youtube.com/feeds/api/playlists/E6DE6EC9A373AF57?v=2'; 
file_put_contents('dest.xml', file_get_contents($src)); 

$src = 'http://gdata.youtube.com/feeds/api/playlists/E6DE6EC9A373AF57?v=2'; 
stream_copy_to_stream(fopen($src, 'r'), fopen('dest.xml', 'w+'));