質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

885閲覧

初心者です JavaScriptのコードをPHPにしたい

trhttrer

総合スコア4

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/12/08 01:30

編集2022/12/08 01:30
var ua = navigator.userAgent; if(ua.indexOf('iPhone') > 0 || ua.indexOf('iPod') > 0 || ua.indexOf('Android') > 0 && ua.indexOf('Mobile') > 0){ a="モバイル"; }else if(ua.indexOf('iPad') > 0 || ua.indexOf('Android') > 0){ a="Tタブレット"; }else{ a="パソコン"; }

これをPHPで書いたら、

$ua = $_SERVER['HTTP_USER_AGENT']; if(strpos($ua,'iPhone') > 0 || strpos($ua,'iPod') > 0 || strpos($ua,'Android') > 0 && strpos($ua,'Mobile') > 0){ $a="モバイル"; }else if(strpos($ua,'iPad') > 0 || strpos($ua,'Android') > 0){ $a="タブレット"; }else{ $a="パソコン"; }

こうなったのですが、正しいでしょうか?
UserAgentから判定するものです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/12/08 02:53 編集

そもそもですが、ブラウザに表示される前に実行されるPHPと ブラウザに表示されたとき(もしくはされた後)に実行されるJavaScriptでは動作する階層が違うので「にしたい」と言っても完全に一致することはありません。。。。 という前提ですが、実際に動作させてみればわかることだと思うのですが、現状何が問題でしょうか? ただ、ユーザーエージェントは既に廃止の動きが始まっていて https://it-web-life.com/chrome_user_agent_abolished/ 「ユーザーエージェントによる判定」は廃れる一方に思います。 「判定することによって何を実現したいか」によって、手法を選ばれたほうが良いと思います(いわゆるXY問題が発生しています)。 単に書き換えたい・・・としても「なぜ書き換えたいのか」という目的部分まで記載されたほうが アドバイスは得やすくなると思いますよ。(質問は編集できるので追記してもらえると)
BeatStar

2022/12/08 04:35 編集

m.ts10806さんのご指摘から考えると、私なら「JavaScript側でnavigator.userAgentから機種を取り出し」て、その値をWeb APIかPOSTを介してPHPに渡すかなと。
m.ts10806

2022/12/08 05:46 編集

BeatStarさん 申し訳ないのですが、どのあたりが私の指摘から考えたのが分かりませんでした。 本質的には「何のために使いたいが先で単に書き換えるのは意味がない(レイヤーの違いも加味すべき)」「そもそもUAで判定というのは今後なくなる(というかできなくなっていく)ので、そのあたりの考慮の有無をはっきりしてほしい」です。 ご賛同いただけるのはありがたいのですが、XY問題部分をまず考えて欲しいところ。
BeatStar

2022/12/08 08:11

@ m.ts10806さん すみません > ただ、ユーザーエージェントは既に廃止の動きが始まっていて... の部分で「セキュリティ面で問題がありそうだな」と考えての上記の「JavaScript側で取得して加工し、それを渡す」というような流れにするかなと考えた次第で…。
m.ts10806

2022/12/08 10:54

使わない、使えなくなるものに対して「使い方」を考えても意味がないと思うのですが。 あと「加工」は言いたいことを正しく表す表現ですか?
guest

回答1

0

ベストアンサー

普通に正規表現で実現できそうですね。
ただUAで出力を変更するのはあまり得策ではないと思いますが

PHP

1$ua = $_SERVER['HTTP_USER_AGENT']; 2if(preg_match("/iPhone|iPod|((?=.*Mobile)|Mobile.*)Android/",$ua)){ 3 $a="モバイル"; 4}elseif(preg_match("/iPad|Android/",$ua)){ 5 $a="タブレット"; 6}else{ 7 $a="パソコン"; 8} 9print $a;

投稿2022/12/08 03:36

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問