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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

2回答

3792閲覧

電話発信ができるタグが知りたい。

442ky119

総合スコア207

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/05/18 10:58

編集2016/05/19 14:57

題名の通り、phpで電話発信ができるタグが知りたいです。
urlを表示させたい場合は<a>タグを使うことは知っていますが、電話発信をする場合はどんなタグを使えばいいですか?
<a href="tel:03->みたいなのを使えば電話発信ができると聞きましたが、僕のphpコードの場合、発信したい電話番号が作成時には表示されておらずwordpressに表示するときにしか表示されないため、<a href="tel:03->の方法は僕のphpコードには向いていないのではないでしょうか?電話番号の部分は%3$sで表示されています。Yahoo!のapiを利用しているので、電話番号はもともと書いていません。
※phpコードとhtmlコードを下記に掲載します。

html

1<td>03-xxxx-yyyy</td> = $0

php

1 $html = '<tr><td>%1$s</td><td>%2$s</td><td>%3$s</td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td><a>%7$s"target="_blank"</a></td></tr>'; 2 $i = 1; 3 4foreach ( $xml->Feature as $key => $item ) { 5 6 printf( $html, $item->Name, $item->Property->Yomi, $item->Property->Tel1, $item->Property->Address, $item->Property->Station->Railway, $item->Property->Station->Name . '駅', $item->Property->Detail->PcUrl1 ); 7

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/05/18 11:04

以前にも同様の質問されていましたが解決済みにもなっておらず、新たに質問されているようですが一度 https://teratail.com/help/question-tips https://teratail.com/tour などを読まれてから質問されることをオススメします。
guest

回答2

0

いくつか確認させてください。

まず、Lhankor_Mhyさんの回答を参考に「やってみた」との事ですが、実際に試したのは以下の事ですか?

【修正前】

PHP

1$html = '<tr><td>%1$s</td><td>%2$s</td><td>%3$s</td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td><a>%7$s"target="_blank"</a></td></tr>';

【修正後】

PHP

1$html = '<tr><td>%1$s</td><td>%2$s</td><td><a href="tel:%3$s">%3$s</a></td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td><a>%7$s"target="_blank"</a></td></tr>';

つまり、今の場合はPHP側を修正して、最終的に出力されるHTMLが

HTML

1<td><a href="tel:03-xxxx-xxxx">03-xxxx-xxxx</a></td>

のようになっているということなのですが。

次に、この「電話発信可能なリンク」というのはHTML5の仕様なのですが、gfbfhさんのPHPコードが生成するHTMLのバージョンは何になっていますか?

つまり生成されたページ(HTML)の先頭行に記載されているドキュメントタイプは

HTML

1<!DOCTYPE html>

となっていますか?

(ご参考) <!DOCTYPE> - ドキュメントタイプ

最後に、結果の確認に使用しているスマホの機種は何ですか?
これはスマートフォン用の機能なので、PC版のブラウザ上で確認しても確認できません。

ですから、スマートフォンの実機上で確認するか、開発用のシミュレーターを使う必要があると思います。

イロイロなシミュレーターが公開されていますので、例えば下記ページなどを参考に、適当な物をダウンロードして試してみてください。
本当に使える! スマホ 【シュミレーター】 【エミュレーター】はこれだ - NAVER まとめ


(コメントに対する追記)

PHP

1$html = '<tr><td>%1$s</td><td>%2$s</td><td><a href="tel:%3$s">%4$s</a></td><td>%5$s</td><td>%6$s</td><td>%7$s</td><td><a>%8$s"target="_blank"</a></td></tr>'; 2 3foreach ( $xml->Feature as $key => $item ) { 4 5 printf( $html, $item->Name, $item->Property->Yomi, str_replace("-", "", $item->Property->Tel1), $item->Property->Tel1, $item->Property->Address, $item->Property->Station->Railway, $item->Property->Station->Name . '駅', $item->Property->Detail->PcUrl1 );

要するに、以前に記載した例だと
<a href="tel:%3$s">%3$s</a>
のようにタグの部分と画面表示の部分にAPIから取得した文字列をそのまま渡していましたが、
<a href="tel:%3$s">%4$s</a>
のように別々にして、%3 の方には「03xxxxxxxx」、%4 の方には「03-xxxx-xxxx」を渡すようにします。
そして、%3 の方に渡す分は、APIから取得した文字列から str_replace関数 を使って「-」を削除してやれば良いだけです。

上記の「例」は、コーディング方法として必ずしも良いお手本ではないですから、必ずご自身でしっかり理解した上でコーディングを行ってください。
PHPでプログラミングする上で文字列の加工は基本中の基本ですから、PHP マニュアル を再確認して、どんな事が出来るのかを把握してからプログラミングすることを強くオススメします。

投稿2016/05/19 23:54

編集2016/05/22 16:22
pi-chan

総合スコア5936

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

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

442ky119

2016/05/20 07:57

ご回答ありがとうございます。 ご指摘の通り、ページ(HTML)の先頭行に記載されているドキュメントタイプは<!DOCTYPE html>です。 また、Lhankor_Mhyさんの回答を参考に「やってみた」との事ですが、pi-chanさんが提示した修正後のphpコードを実際に書きました。 質問ですが、<!DOCTYPE html>だと電話発信ができないのですか? また、最終的に出力されるHTMLが<td><a href="tel:03-xxxx-xxxx">03-xxxx-xxxx</a></td>のような形になりません。</td>の後ろに=$0という形になります。 どうすれば、HTMLが<td><a href="tel:03-xxxx-xxxx">03-xxxx-xxxx</a></td>のような形になりますか?
pi-chan

2016/05/20 15:44 編集

まず「<!DOCTYPE html>」はダメではなく「OK」です。 そして、「</td>の後ろに=$0」となる理由はよく分かりませんが、この事自体は本件と無関係だと思います。(仮に表示が乱れるとしても、リンクの表示とは無関係) それと、新たに確認した内容によれば、下記のように「ハイフンなし」で記載しないとダメなようです。 「<a href="tel:0120123456678">0120-1234-5678</a>」 (参考) > http://uq-design.tokyo/smart-phone-call/
442ky119

2016/05/21 00:50

ご回答ありがとうございます。 「ハイフンなし」で記載しないとダメなようです。と回答文に記載されていますが、僕が作成したphpコードの場合<td>%3$s</td>なので、ハイフンで表示することはできません。理由は、apiから電話番号を取得するためです。
pi-chan

2016/05/21 02:54

APIから取得でも大丈夫ですよ。 APIから受け取った文字列を加工すれば良いだけです。 お試し出来る環境が無いのできとんと動くコードは書けませんが、雰囲気を回答欄に追記しておきます。
442ky119

2016/05/22 02:17

apiから受け取った文字列を加工する方法を教えて下さい。
pi-chan

2016/05/22 03:10

回答欄の追記は、きちんとご確認頂いたのでしょうか??ご確認頂けないなら回答しても意味が出来ます無いですね~。str_replace関数で文字列から「-」を除外するだけなのですが・・・
442ky119

2016/05/22 03:29

すみません、ちゃんと読んでいなかったので。 str_replace関数とは何ですか?
442ky119

2016/05/22 08:27

ご回答ありがとうございます。電話発信することができました。 ただ、二つ質問があります。上記のphpコードを実装したら一つはurlの部分のセルが空欄になり、urlが最寄り駅の部分のセルに挿入されます。どうすれば、元通りになりますか? 二つ目はurlが表示されません。クリックしても表示されません。どうすれば表示されますか?
tonarino210

2016/05/22 11:58

横から失礼します。 電話発信については解決したのであれば質問を解決済みにした方が良いです。 追加の質問は「別の質問」として投稿して、この質問はクローズするべきです。
442ky119

2016/05/22 14:38

まだ問題は解決していません。
pi-chan

2016/05/22 16:30

「str_replace関数とは何ですか?」とのご質問ですが、回答をきちんと読んで頂いていますか?str_replace関数について詳細が分かるよう、わざわざリファレンスに対する「リンク」にしてありますから、そこをクリックするだけで詳細を確認出来るはずなのですが… そもそも、PHPでプログラミングするに当たり、基本的な関数の仕様について、自力で調べられないようでは先が思いやられます。 それと「上記のphpコードを実装したら」とありますが、意味も考えずにただコピペして済ませようとされていませんか!? そのような取り組み方では、結局はいつまでも自力でプログラミングできるようにはならないですよ。 (回答欄は修正しておきましたが)原因はおそらく、こちらのタイプミスで「str_replace」と「(」の間に空白が混入していたために、printf関数の引数と $html に定義されている引数の番号付けがずれてしまったためだと思います。 余計な空白を削除した上で、引数の番号付けを再点検して見てください。
guest

0

不明な点が多いのでなんとも言い難いですが、

<a href="tel:%3$s">%3$s</a>

って書けばいいんじゃないですかね。たぶん。

投稿2016/05/18 11:07

Lhankor_Mhy

総合スコア36115

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

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

442ky119

2016/05/18 11:15

やってみましたが、できませんでした。
Lhankor_Mhy

2016/05/18 11:29

どんな風にやってみて、どんな風にできなかったを書いていただければ、なにかアドバイスができるかもしれませんね。
442ky119

2016/05/18 15:08

<a href="tel:%3$s">%3$s</a>と入力しましたが、電話発信ができるタグが出てきませんでした。
442ky119

2016/05/19 14:54

htmlソースコードを本文に掲載しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問