いくつか確認させてください。
まず、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)の先頭行に記載されているドキュメントタイプは
となっていますか?
(ご参考) <!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 マニュアル を再確認して、どんな事が出来るのかを把握してからプログラミングすることを強くオススメします。