一个高效的根据IP自动显示天气预报的方案
php代码
<?php class weather{ // 省和省会 private $capital = array( '黑龙江省'=>'哈尔滨市', '吉林省'=>'长春市', '辽宁省'=>'沈阳市', '河北省'=>'石家庄市', '山西省'=>'太原市', '山东省'=>'济南市', '青海省'=>'西宁市', '甘肃省'=>'兰州市', '陕西省'=>'西安市', '河南省'=>'郑州市', '江苏省'=>'南京市', '四川省'=>'成都市', '湖北省'=>'武汉市', '安徽省'=>'合肥市', '浙江省'=>'杭州市', '湖南省'=>'长沙市', '江西省'=>'南昌市', '贵州省'=>'贵阳市', '福建省'=>'福州市', '台湾省'=>'台北市', '云南省'=>'昆明市', '广东省'=>'广州市', '海南省'=>'海口市', '上海市'=>'上海', '北京市'=>'北京', '天津市'=>'天津', '重庆市'=>'重庆', '香港'=>'香港', '澳门'=>'澳门', '新疆'=>'乌鲁木齐市', '内蒙古'=>'呼和浩特市', '宁夏'=>'银川市', '西藏'=>'拉萨市', '广西'=>'南宁市' ); public $province = '北京';// 默认 public $city = '北京';// 默认 // 获取ip static function getIP(){ $ip = '127.0.0.1'; if(isset($_SERVER)){ if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if(isset($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; }else{ $ip = $_SERVER["REMOTE_ADDR"]; } }else{ if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }else if(getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); }else{ $ip = getenv("REMOTE_ADDR"); } } return $ip; } public function setArea($addr){ // 分割省市 foreach($this->capital as $p => $c){ if(strpos($addr,$p) === 0){ $this->province = str_replace(array('省','市'),'',$p); $this->city = substr($addr,strlen($p)); if($this->city == ''){ $this->city = $c;// 默认省会 } } } } public function getAreaCode(){ $code = '101010100';// 默认北京 // 到本地地区库里找中国气象地区编码,可以把序列化数据直接反序列化后放到本文件里,会更快 $area = file_get_contents("area.php"); $area = unserialize($area); //print_r($area); $province = array(); foreach($area as $k => $v){ $province[$k] = $v['level0']; } $pid = array_search($this->province,$province); if($pid !== false){ $citys = $area[$pid]['level1']; $cityid = array_search($this->city,$citys); if($cityid !== false){ $code = '101'.$cityid.'01'; }else{ $code = '101'.$pid.'0101'; } } return $code; } } /* 纯真ip库返回的地区格式如下: xx省xx市 或者 xx市 如果是自治区则为:新疆乌鲁木齐市,分割省市极麻烦 */ $weather = new weather(); // php的扩展iplocation $addrarr = iplocation_fetch(weather::getIP()); $addr = iconv('gbk','utf-8',$addrarr['province']); $weather->setArea($addr); $code = $weather->getAreaCode(); // 尝试从redis里读取天气数据 $redis_host = '127.0.0.1'; $redis_port = 6379; /* redis connect */ $redis = new Redis(); $redis->connect($redis_host, $redis_port); $data = $redis->get($code); if(!$data){ // 从中国气象去抓,并存入redis $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://m.weather.com.cn/data/{$code}.html"); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt ($curl, CURLOPT_TIMEOUT, 30 ); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); curl_close($curl); if($data){ $redis->set($code,$data); $redis->EXPIRE($code,3600); }else{ echo 'weather.com.cn 连接超时'; } } print_r($data);

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C 言語の特徴と利点: C 言語が最も人気のあるプログラミング言語の 1 つである理由は何ですか? C 言語は汎用の高級プログラミング言語として、多くの独自の機能と利点を備えているため、最も人気のあるプログラミング言語の 1 つとなっています。この記事では、C 言語の特徴と利点、およびさまざまな分野での幅広い用途について説明します。まず、C 言語は構文が簡潔で構造が明確です。他のプログラミング言語と比較して、C 言語の構文は比較的単純で、理解しやすく、学習しやすいです。自然言語の特性を使用して、プログラマーが次のことを実行できるようにします。

2021年12月以降、Huawei & Honor携帯電話はビエンチャンデスクトップウィジェット機能を開始しました。多くの便利な機能、視覚的に最適化されたデスクトップ コントロールなどが多くのユーザーのモバイル デスクトップに追加され、今年 8 月までに 2 つの主要販売プラットフォームはスポーツや健康データ、気象データ、音楽データ、システム データなども公開しました。 、ユーザーはモバイル デスクトップを使用できるようになります。インタラクティブな操作はより便利で、より速く、より興味深いものになり、ユーザーは DIY して独自のパーソナライズされたデスクトップを作成できます。ウィジェット追加後のモバイルデスクトップ 最近、多くの Huawei 携帯電話ユーザーが、Huawei および Honor 携帯電話にデスクトップ ウィジェットを追加する方法がよくわからないと報告し、プロセスが複雑すぎて面倒だと不満を述べています。誰もがこの問題を解決できるよう、Qian Shuxian は詳細な操作プロセスを準備しました。

Cドライブの空き容量が少なくなっています!効率的な掃除方法5つを公開!コンピュータを使用する過程で、多くのユーザーは C ドライブの空き容量が不足する状況に遭遇することがありますが、特に大量のファイルを保存またはインストールした後は、C ドライブの空き容量が急速に減少し、パフォーマンスやパフォーマンスに影響を及ぼします。コンピューターの実行速度。現時点では、Cドライブをクリーンアップする必要があります。では、Cドライブを効率的にクリーンアップするにはどうすればよいでしょうか?次に、この記事では、Cドライブの容量不足の問題を簡単に解決できる5つの効率的なクリーニング方法を紹介します。 1. 一時ファイルをクリーンアップする. 一時ファイルは、コンピュータの実行中に生成される一時ファイルです。

Python と C++ は 2 つの人気のあるプログラミング言語ですが、それぞれに独自の長所と短所があります。プログラミングを学びたい人にとって、Python と C++ のどちらを学ぶかは重要な決定となることがよくあります。この記事では、Python と C++ の学習コストを調査し、どの言語が時間と労力を費やす価値があるかについて説明します。まずはPythonから始めましょう。 Python は、学習の容易さ、明確なコード、簡潔な構文で知られる高レベルのインタープリタ型プログラミング言語です。 C++、Pythonとの比較

タイトル: Go 言語エンコーディング変換の効率的な実践ガイド 日常のソフトウェア開発では、テキストを異なるエンコーディングに変換する必要に遭遇することがよくあります。 Go 言語は効率的で最新のプログラミング言語として、豊富な標準ライブラリと組み込み関数を提供しており、テキスト エンコーディングの変換を非常に簡単かつ効率的に実装できます。この記事では、Go 言語でエンコード変換を実行する方法に関する実践的なガイドラインを紹介し、具体的なコード例を示します。 1.UTF-8 エンコーディングと文字列変換 Go 言語では、文字列はデフォルトで UTF-8 エンコーディングを使用します。

Go 言語の機能と特徴 Go 言語は、Golang とも呼ばれ、Google によって開発されたオープンソース プログラミング言語であり、元々はプログラミングの効率と保守性を向上させるために設計されました。 Go 言語は誕生以来、プログラミングの分野でその独特の魅力を発揮し、広く注目と認知を得てきました。この記事では、Go 言語の機能と特徴を詳しく掘り下げ、具体的なコード例を通じてその威力を実証します。ネイティブ同時実行サポート Go 言語は本質的に同時プログラミングをサポートしており、ゴルーチンとチャネル メカニズムを通じて実装されます。

徹底的な探索: Go 言語を使用した効率的なクローラー開発 はじめに: インターネットの急速な発展に伴い、情報の入手はますます便利になりました。 Webサイトのデータを自動取得するツールとして、クローラーへの注目が高まっています。多くのプログラミング言語の中でも、Go 言語は、高い同時実行性や強力なパフォーマンスなどの利点により、多くの開発者にとって優先されるクローラー開発言語となっています。この記事では、効率的なクローラー開発のための Go 言語の使用方法を検討し、具体的なコード例を示します。 1. Go 言語クローラー開発の利点: 高い同時実行性: Go 言語

デスクトップに天気予報機能が追加されますが、デスクトップの天気予報を復元するにはどうすればよいですか?ユーザーは、デスクトップで [ウィンドウ ツール] をクリックし、次に [天気] をクリックして、天気コンポーネントを選択する必要があります。このデスクトップ天気予報回復方法の紹介では、具体的な操作方法を説明します。デスクトップの天気予報を復元するにはどうすればよいですか? 回答: デスクトップ ウィジェットで天気を選択し、デスクトップに追加します。具体的な方法: iOS の方法: 1. Apple 画面を長押しし、左上の + 記号をクリックします。 2. 天気を検索し、アプリを開きます。 3. 次に、天気コンポーネントのスタイルを選択し、「ウィジェットの追加」をクリックします。 4. 次に、右上の「完了」をクリックします。 Android の方法: 1. 画面を長押しし、ウィジェットをクリックします。 2. 空をクリックします
