ユーザーエイジェントの置き換え

解決済みの質問

ユーザーエイジェントの置き換え

ユーザーエイジェントを検索して
UP.Browserという文字列があった場合、
ユーザーエイジェントをauという置き換え表示したいと思っています。
具体的には
KDDI-KC3R UP.Browser/6.2_7.2.7.1.K.4.310 (GUI) MMP/2.0

au
と表示したいのですが、
Perlで記述する場合以下のように書いて間違えありませんか?
間違いなどありましたご指摘ください。

if($ENV{'HTTP_USER_AGENT'} =~ /UP.Browser/) {
$agent=~s/$ENV{'HTTP_USER_AGENT'} /au/g;
}

投稿日時 - 2011-08-01 17:30:18

QNo.6914244

暇なときに回答ください

質問者が選んだベストアンサー

「間違いの可能性がある」あるいは「もっと効率いい方法がある」と思います。

・${HTTP_USER_AGENT} が UPXBrowserでもマッチします。
→UP.Browser と「.」以外が絶対に無いのなら問題にはなりませんが
→.をエスケープするとか、indexを使うとか。

・$agentの中身はどうなっているのでしょう?
→UP.Browserとかが沢山あるならともかく、一つしかないのならgはいらないです
→上と同様KDDI-KC3R UPMBrowser/612_7324771-K-45310 (GUI) MMP/250 みたいなのも置換されます。まずないでしょうが。
→$agent=$ENV{'HTTP_USER_AGENT'} なら、置換などせずに $agent='au' ; で済みますよね

・$ENV{'HTTP_USER_AGENT'} は今アクセスしている人のものです
→ 「あなたはauを使っています」みたいな使いかたならいいですが

投稿日時 - 2011-08-01 19:01:30

お礼

忙しくて見るのが今になってしまい、申し訳ありません。そんな方法もあるんですね。まだ初心者なので思いつきませんでした!いい方法をお教えくださり、ありがとうございます。

投稿日時 - 2011-08-07 15:39:47

ANo.1

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(4件中 1~4件目)

ANo.5

> ユーザーエイジェントに「UP.Browser」という文字列があった場合、$agentに「au」と入れたい。
というなら、素直に、
if(index($ENV{'HTTP_USER_AGENT'},'UP.Browser')>=0){ $agent='ua';}
でどうですか。

投稿日時 - 2011-08-06 15:13:33

お礼

それが効率良い方法ですね。
ありがとうございます!

投稿日時 - 2011-08-07 15:41:14

ANo.4

>#2
ああ、本当ですね。うっかりしてました。
実際でもタマにやらかします。<メタ文字の見落し。
最初からパターンを作ろうとすると、まず大丈夫ですが、特定の文字列を見付けようとコピペしたときとかによくありますね。


そういうわけで、 決まった文字列を検索するなら、indexを使うとか、メタ文字を無効にする\Q \E を使うとかした方がいいですよ。という実例でした。


質問者からの補足がないので、どんな方法がいいのかアドバイスできませんが。

投稿日時 - 2011-08-02 21:22:05

ANo.3

こういうこと?

$agent_length = length($ENV{'HTTP_USER_AGENT'});
$agent_index = index($agent, $ENV{'HTTP_USER_AGENT'});
if (0 <= $agent_index && 0 <= index($ENV{'HTTP_USER_AGENT'}, "UP.Browser")) {
  substr($agent, $agent_index, $agent_length, "au");
}

投稿日時 - 2011-08-02 13:48:51

ANo.2

きっと勇み足だと思いますが, 本当に $ENV{'HTTP_USER_AGENT'} の値が
'KDDI-KC3R UP.Browser/6.2_7.2.7.1.K.4.310 (GUI) MMP/2.0'
なら
KDDI-KC3R UPMBrowser/612_7324771-K-45310 (GUI) MMP/250
は置換できないですよね>#1. 「かっこ」にマッチしない....

さておき, 「ユーザーエイジェント」と $agent と $ENV{'HTTP_USER_AGENT'} とはどのような関係にあるんでしょうか?

投稿日時 - 2011-08-02 00:57:46

あわせてチェックしたい
  • 複数の比較( =~ )を効率よくまとめたい ...
  • 携帯端末認識User-Agentについて ...
  • GuiでGuiを操作 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら