2012-01-27 44 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+'));