Extracting the values from a xml url

后端 未结 1 583
忘掉有多难
忘掉有多难 2021-01-27 18:00

I need to print the values inside Identificador tags from this Url https://clip.unl.pt/sprs?lg=pt&year=2013&uo=97747&srv=rsu&p=1&tp=s&md=3&rs=8145&am

相关标签:
1条回答
  • 2021-01-27 18:47

    Instead of your custom download_file_content() function, i used file_get_contents() and passed the xml string on to SimpleXMLElement. Hope that points you in the right direction. Consider splitting the functionality in two methods: a) buildURL() b) fetchXMLContent().

    $xmlContent = file_get_contents('https://clip.unl.pt/sprs?lg=pt&year=2013&uo=97747&srv=rsu&p=1&tp=s&md=3&rs=8145&it=1030123459');
    $xmlObj = new SimpleXMLElement($xmlContent);
    
    foreach($xmlObj->unidade_curricular->inscritos->aluno as $aluno){
        $result= $aluno->identificador;
        echo $result;
    }
    

    To answer your comment: that involves another problem! Your domains is a HTTPS domain, so you need to tell cURL how to handle that. I've created an example, which solves all the mentioned problems and demonstrates cURL usage.

    <?php
    
    function buildURL($year, $period, $typeperiod, $course)
    {
        return 'https://clip.unl.pt/sprs?lg=pt&year='.$year.'&uo=97747&srv=rsu&p='.$period.'&tp='.$typeperiod.'&md=3&rs='.$course.'&it=1030123459';
    }
    
    function doRequest_with_FileGetContents($url)
    {
       return file_get_contents($url);
    }
    
    function doRequest_with_cURL($url) {
      $ch=curl_init();
      curl_setopt($ch,CURLOPT_URL, $url);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    
      // your domain is a HTTPS domain, so you need to tell curl how to deal with SSL verifications
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    
      $data=curl_exec($ch);
      curl_close($ch);
    
      return $data;
    }
    
    function processXML($xmlContent)
    {
       $xmlObj = new SimpleXMLElement($xmlContent);
    
        foreach($xmlObj->unidade_curricular->inscritos->aluno as $aluno){
           $result= $aluno->identificador;
           echo $result;
        }
    }
    
    // Ok. Lets test..
    
    // some testing values, i guess these will come from a formular
    $year = '2013';
    $period = '1';
    $typeperiod = 's';
    $course = '8145';
    
    // a) build URL
    $url = buildURL($year, $period, $typeperiod, $course);
    
    // b) fetch content
    $content_a = doRequest_with_cURL($url);
    
    $content_b = doRequest_with_FileGetContents($url);
    
    // c) process content (should be the same)
    echo "\nRequest with cURL\n";
    processXML($content_a);
    
    echo "\nRequest with file_get_contents()\n";
    processXML($content_b);
    
    0 讨论(0)
提交回复
热议问题