使用PHP从URL获取XML源代码

时间:2016-10-18 15:28:16

标签: php xml

我尝试使用以下方法从其网址打印网页的xml源内容:

angular.module('MyModule', [])
    .controller( 'MyController', function($scope){
        $scope.showMovie = function(movie){
           angular.forEach(movie.genre, function(genreM){
           return genreM.genreName === $scope.Filter.Comedy || 
             genreM.genreName === $scope.Filter.Drama ||
             genreM.genreName === $scope.Filter.Action;
         }
        };

        $scope.movies = [
                  {title:'Man on the Moon', genre: [   
                    {genreName: 'Family', genreId: '1'},  
                    {genreName: 'Action', genreId: '2'}  
                ]},
                  {title:'Meet the Robinsons', genre: [   
                    {genreName: 'Family', genreId: '1'},  
                    {genreName: 'Action', genreId: '2'}  
                ]},
                  {title:'Sphere', [   
                    {genreName: 'Family', genreId: '1'}    
                ]}
               ];
    });

但是,会显示错误消息:

  

警告:file_get_contents(http://eur-lex.europa.eu/legal-content/FR/TXT/XML/?uri=CELEX:32012R0823

有什么问题?获取源XML的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您在源页面中声明了在页面顶部尝试ob_start()函数,它可能被标题阻止。

答案 1 :(得分:0)

我的问题解决了!我公司的代理是负责任的。 为了绕过它,我安装了CNTLM(本地代理:命令行工具)。 有了这个,你必须用公司的代理信息更新cntlm.ini并运行这个命令:

cntlm -I -f -c {path of cntlm.ini}

然后,php脚本:

$aContext = array( 
            'http' => array( 
                            'proxy' => "localhost:{port(in cntlm.ini find 'listen', in my case it is 3128)}",  
                            'request_fulluri' => True, 
                            'userid'=>"{username}", 
                            'password'=>"{password}" 
                            )
            ); 

$context = stream_context_create($aContext); 

$content =  file_get_contents({your target url string}, 0, $context);  
echo $content;

我希望它会有所帮助!