

RSSを読み込んで天気予報を表示しようと考えていますが、mph(マイル/時)で表示されている風速をm/秒に換算する段階で困っています。
例)
$description = "やや曇り 風向き: 南南東 風力: 9 mph. のち 小雨 風向き: 南 風力: 9 mph. ";
上記の例では、"9 mph."が2箇所ありますが、これらをいずれも
$ms = $mph * 0.45;
として
$description = "やや曇り 風向き: 南南東 風力: 4 m/秒 のち 小雨 風向き: 南 風力: 4 m/秒 ";
と変換したいのですが、数字をどのように抽出したらいいのかが分かりません。対象がRSS読み込み結果ですので、もちろん数値は毎回変わります。
正規表現を使えばうまくいくかも、というところまでは分かるのですが、何分にも正規表現に関しては超素人です。検索も試みましたがうまくヒットしませんでした。
何卒、ご教示お願いいたします。
No.2ベストアンサー
- 回答日時:
>その他のパターンでは変換されなかったり、
そうですね、当然考えるべきパターンを全然考慮してませんね。すみませんボケてました。
単純に、次のようなパターンでいいと思います
$result=preg_replace("/(\d+)( mph)/e","round(\\1*0.45).' m/秒'",$description );
>計算結果が期待していたものと違ってくるのです。
四捨五入してますが、不要ならroundを消してください
No.1
- 回答日時:
$description = "やや曇り 風向き: 南南東 風力: 9 mph. のち 小雨 風向き: 南 風力: 9 mph. ";
$result=preg_replace("/(.+)(\d+)( mph)(.+)(\d+)( mph)(.+)/e","'\\1'.round(\\2*0.45).' m/秒\\4'.round(\\5*0.45).' m/秒\\7'",$description);
print "$result\n";
この回答への補足
申し訳ありません。$descriptionのサンプルが少なかったようです。
1) $description = "晴れ 風向き: 北 風速: 11 mph. ";
2) $description = "やや曇り 風向き: 北 風速: 16 mph 最大風速: 27 mph. ";
3) $description = "やや曇り 風向き: 南南東 風力: 9 mph. のち 小雨 風向き: 南 風力: 9 mph. ";
4) $description = "やや曇り 風向き: 北 風速: 16 mph 最大風速: 27 mph. のち 晴れ 風向き: 北 風速: 11 mph. ";
5) $description = "おおむね曇り 風向き: 北 風速: 11 mph. のち やや曇り 風向き: 北 風速: 16 mph 最大風速: 27 mph. ";
6) $description = "おおむね曇り 風向き: 北 風速: 11 mph. 最大風速: 17 mph. のち やや曇り 風向き: 北 風速: 16 mph 最大風速: 27 mph. ";
など、いろいろなパターンがあるのです。
BLUEPIXYさんからご提示いただいた式では、3)のパターン(最初に提示した例)は確かにうまくいくのですが、その他のパターンでは変換されなかったり、計算結果が期待していたものと違ってくるのです。
考えられるあらゆるパターンの文字列 $description に出てくる全ての "~mph."を、"(~*0.45) m/秒"に変換する方法はないでしょうか?
BLUEPIXYさんからご提示のあった方法をヒントに自分でも考えてみますが、引き続きご回答お待ちしています。
言葉足らずの質問で申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 地球科学 気象予報士試験 第36回 実技1の相当温位の鉛直断面図について 2 2022/06/19 19:37
- 地球科学 中学生 理科 1 2022/11/19 21:48
- 物理学 風車が回転する理由 5 2023/05/08 08:03
- 風水 【風水】ベッドの配置や向きはどうしたら、、、? 1 2022/05/30 10:18
- その他(データベース) 4進数風なバーコードは何ですか? 2 2022/11/28 23:33
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- 物理学 2種類の風切り音の周波数の違い 1 2023/04/20 07:39
- 風水 【風水】ベッドの向きはどちら側にすれば、、、? 2 2022/05/30 08:16
- 英語 天候の英語表現 2 2023/03/10 09:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で記号 & アンドの検索...
-
「半角数字」と「+」を許可する...
-
eval
-
正規表現パターンの記入方法に...
-
URLを抽出する正規表現
-
PHPで似たコードを繰り返す場合...
-
文字列中の任意の数字を換算
-
正規表現で特定のHTMLタグのク...
-
正規表現で…
-
正規表現の書き方について
-
正規表現を使いimgタグ内から幅...
-
preg_match : マッチした位置の...
-
正規表現 画像リンクのaltの取得
-
正規表現で「0」のみ抽出
-
Smartyを使用した、テンプレー...
-
PHPで変数から1行目だけを取得...
-
VBAのコマンドボタンの文字列の...
-
1文字のStrConv fromUnicode
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで変数から1行目だけを取得...
-
VBAを使ってHTMLソースから特定...
-
、"(ダブルクォーテーション)...
-
PHPで<a>タグ内からURLと文字を...
-
preg_matchでエラーが出ます。
-
電話番号のチェック ハイフン...
-
正規表現でシングルクォーテー...
-
正規表現で「0」のみ抽出
-
Smartyで部分一致
-
正規表現で、半角大文字と半角...
-
C#でのワイルドカードを使った...
-
正規表現パターンの記入方法に...
-
Excelで数字のみを2倍3倍にする...
-
Smartyを使用した、テンプレー...
-
PHPメールフォーム URLと半角...
-
preg_matchの正規表現で
-
文字列から数値だけ取得するに...
-
「半角数字」と「+」を許可する...
-
php 正規表現で(ただし○○は除...
-
正規表現での改行数を求めるに...
おすすめ情報