php
  • xml
  • 2014-08-31 2 views 1 likes 
    1

    Я пытаюсь вывести текущее время и температуру для телефона в линию. Он должен выводиться как XML. До сих пор у меня естьPHP XML-вывод с включенными?

    <?php 
    header("content-type: text/xml"); 
    echo "<?xml version='1.0' encoding='UTF-8'?>"; 
    echo "<Response>"; 
    echo "<Say>"; 
    echo('Time is'); 
    echo date('H:i'); 
    echo('Temp is'); 
    echo "</Say>"; 
    echo "</Response>"; 
    ?> 
    

    Проблема, с которой я сталкиваюсь, - это получить температуру. У меня есть следующий образец, который я пытался использовать. Но каждый раз, когда я пытаюсь включить его я получаю Предупреждение: Не удается изменить информацию в заголовке - заголовки уже посланные

    <?php 
    
    function getWeatherRSS($weatherLink){ 
    
        if ($fp = fopen($weatherLink, 'r')) { 
         $content = ''; 
    
         while ($line = fread($fp, 1024)) { 
         $content .= $line; 
         } 
        } 
    
        return $content; 
    } 
    
    function processWeather($wurl){ 
    
        $wrss = getWeatherRSS($wurl); 
        $temp = '-'; 
        $tempu = ''; 
        $city = ''; 
        if (strlen($wrss)>100){ 
         // Get temperature unit C or F 
         $spos = strpos($wrss,'yweather:units temperature="')+strlen('yweather:units temperature="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $tempu = substr($wrss,$spos,$epos-$spos); 
         } 
    
         $spos = strpos($wrss,'yweather:wind chill="')+strlen('yweather:wind chill="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $temp += substr($wrss,$spos,$epos-$spos); 
         } else { 
          $temp = '-'; 
         } 
    
         // Get city name 
         $spos = strpos($wrss,'yweather:location city="')+strlen('yweather:location city="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $city = substr($wrss,$spos,$epos-$spos); 
         } 
    
        } 
    
        return $city.' &nbsp;'.$temp.' &deg;'.$tempu; 
    
    } 
    ?> 
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> 
    <html> 
    <head> 
        <title>Micro Weather</title> 
        <link href="style/style.css" rel="stylesheet" type="text/css" /> 
    </head> 
    <body> 
        <div id="main"> 
         <div id="caption">CURRENT WEATHER</div> 
         <div id="icon2">&nbsp;</div> 
         <div id="result"><?php echo processWeather('http://xml.weather.yahoo.com/forecastrss?p=USAR0543&u=f'); ?> 
         </div> 
         <div id="source">Micro Weather 1.0</div> 
        </div> 
    </body> 
    

    Любые советы о том, как я могу передать температуру в XML?

    +0

    Исправление ошибки заголовка. http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php –

    ответ

    0

    Вы не можете отправить headerd после вывода текста. Поместите все ваши отпечатки и экземпляры эха после последнего вызова заголовка.

    Вы можете использовать перенаправление при необходимости с данными формы.

    0

    я в конечном итоге получить его на работу со следующим

    <?php 
    date_default_timezone_set('America/Chicago'); 
    
    
    function getWeatherRSS($weatherLink){ 
    
        if ($fp = fopen($weatherLink, 'r')) { 
         $content = ''; 
    
         while ($line = fread($fp, 1024)) { 
         $content .= $line; 
         } 
        } 
    
        return $content; 
    } 
    
    function processWeather($wurl){ 
    
        $wrss = getWeatherRSS($wurl); 
        $temp = '-'; 
        $tempu = ''; 
        $city = ''; 
        if (strlen($wrss)>100){ 
         // Get temperature unit C or F 
         $spos = strpos($wrss,'yweather:units temperature="')+strlen('yweather:units temperature="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $tempu = substr($wrss,$spos,$epos-$spos); 
         } 
    
         $spos = strpos($wrss,'yweather:wind chill="')+strlen('yweather:wind chill="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $temp += substr($wrss,$spos,$epos-$spos); 
         } else { 
          $temp = '-'; 
         } 
    
         // Get city name 
         $spos = strpos($wrss,'yweather:location city="')+strlen('yweather:location city="'); 
         $epos = strpos($wrss,'"',$spos); 
         if ($epos>$spos){ 
          $city = substr($wrss,$spos,$epos-$spos); 
         } 
    
        } 
    
        return $temp; 
    
    
    } 
        $a = processWeather('http://xml.weather.yahoo.com/forecastrss?p=USAR0543&u=f'); 
    
    header("content-type: text/xml"); 
    echo "<?xml version='1.0' encoding='UTF-8'?>"; 
    echo "<Response>"; 
    echo "<Say>"; 
    echo('TXK Today Time is'); 
    echo "</Say>"; 
    echo "<Say>"; 
    echo date('g:i '); 
    echo "</Say>"; 
    echo "<Say>"; 
    echo('Current Temperature'); 
    echo "</Say>"; 
    echo "<Say>"; 
    echo $a; 
    echo "</Say>"; 
    echo "</Response>"; 
    ?> 
    
    Смежные вопросы