xhtmlの最初の行に半角スペースが入ってしまいます(APIの天気予報を、PHP+smarty〔xhtml〕で表示したい)
APIの天気予報を、PHP+smartyで表示しようと思います。しかし表示された画面のソースを見ると、xhtmlの最初の行に半角スペースが入って、htmlと認識されてしまいます。原因は以下のファイルのようなのですが、なにか原因がありますでしょうか?ちなみに、<?phpはファイルの先頭に、?>の後の改行はありません、文字コードはutf-8bom無しです
以下のファイルにidをpostしています。どうかご教授いただけないでしょうか?..........................................................
$documentroot = dirname( __FILE__) . '/';
require_once $documentroot . '../../php_libs/config/config.inc.php';
require_once("jsphon2/Jsphon.php");
require_once ("Net/UserAgent/Mobile.php");
require_once ("Net/IPv4.php");
require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = _SMARTY_TEMPLATES_DIR;
$smarty->compile_dir = _SMARTY_TEMPLATES_C_DIR;
$smarty->config_dir = _SMARTY_CONFIG_DIR;
$smarty->cache_dir = _SMARTY_CACHE_DIR;
$smarty->caching = 2;
if(isset($_POST['id'])){
//ライブドアの天気予報を表示する関数
function lwws($city,$day){
//XMLデータ取得用ベースURL
$req = "http://weather.livedoor.com/forecast/webservice/rest/v1";
//XMLデータ取得用リクエストURL生成
$req .= "?city=".$city."&day=".$day;
//XMLファイルをパースし、オブジェクトを取得
$xml = simplexml_load_file($req)
or die("XMLパースエラー");
$lwwsarea = $xml->pinpoint->location->title;
$lwwstitle = $xml->title;
$lwwsimage = $xml->image->url;
$lwwsalt = $xml->image->title;
$lwwsmax = $xml->temperature->max->celsius;
$lwwsmin = $xml->temperature->min->celsius;
$lwwsdescription = $xml->description;
$ret = '<div class="lwws">';
$ret .= '<div>'.'<span style="color:#ff0000;"></span>'.$lwwsarea.'の天気</div>';
$ret .= '<div style="background-color:#fce6f3">'.$lwwstitle."</div>";
$ret .= "<br /><div><img src=\"".$lwwsimage."\" alt=\"".$lwwsalt."\" /></div>";
$ret .= "<div>最高気温".$lwwsmax."度</div>";
$ret .= "<div>最低気温".$lwwsmin."度</div>";
$ret .= "<div>".$lwwsdescription."</div>";
$ret .= "</div>";
return array ($ret,$lwwsarea,$lwwstitle);
}
function lwws2($city,$day){
//XMLデータ取得用ベースURL
$req = "http://weather.livedoor.com/forecast/webservice/rest/v1";
//XMLデータ取得用リクエストURL生成
$req .= "?city=".$city."&day=".$day;
//XMLファイルをパースし、オブジェクトを取得
$xml = simplexml_load_file($req)
or die("XMLパースエラー");
$ret = '<div class="lwws2">';
$ret .= '<div style="background-color:#fce6f3">'.$xml->title."</div>";
$ret .= "<br /><div><img src=\"".$xml->image->url."\" alt=\"".$xml->image->title."\" /></div>";
$ret .= "<div>最高気温".$xml->temperature->max->celsius."度</div>";
$ret .= "<div>最低気温".$xml->temperature->min->celsius."度</div>";
$ret .= "<br />";
$ret .= "</div>";
return $ret;
}
//リクエストパラメータ設定
$city = $_POST['id']; //場所を設定
$day = "today"; //今日の天気
$day2 = "tomorrow";
$day3 = "dayaftertomorrow";
//ライブドアの天気予報を表示する関数をコールする
list($ret, $lwwsarea1, $lwwstitle1) = lwws($city,$day);
$ret2 = lwws2($city,$day2);
$ret3 = lwws2($city,$day3);
//キャッシュの残り時間を生成
$now=time() +(60 * 24);
$asu=time() +(60 * 60 * 24);
$y=date("Y", $asu);
$m=date("m", $asu);
$d=date("d", $asu);
$asu_byou= mktime(0, 0, 0, $m, $d, $y);
$sa= $asu_byou - $now;
}
$smarty-> assign ('lwws1' , $ret);
$smarty-> assign ('lwws2' , $ret2);
$smarty-> assign ('lwws3' , $ret3);
$smarty-> assign ('lwwsarea', $lwwsarea1);
$smarty->assign('city', $city);
$cache_id = $city;
//あすの0:00までの秒数をセットする
$smarty->cache_lifetime = $sa;
if ($smarty->is_cached("weather.tpl", $cache_id)){
$smarty->display("weather.tpl", $cache_id);
exit();
}
$smarty->display("weather.tpl", $cache_id);
お礼
その方向で考えていたのですが、いろいろ調べていたらできました。 InputStream をつかって DocumentBuilder.parse(InputStream) でやりました。 ナニワともあれレス感謝です。