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

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

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

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

Q&A

2回答

588閲覧

phpでhtmlのテンプレートを利用したい

tadano

総合スコア0

PHP

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

0グッド

1クリップ

投稿2021/01/20 01:15

ほぼ初めてphpを触ります。

phpのメールフォームを利用しようとしています。
https://web-dev.xyz/php-originalmailform/

今までcgi(perl)のメールフォームを利用していたのですが、確認画面・送信完了画面。エラー表示画面の3か所のヘッダー・フッター部分がhtmlのテンプレートを使用していました。

htmlは内容を表示したい部分に「##split##」と記載します。
簡素に書くと

html

1<!doctype html> 2<html> 3<head> 4<meta charset="utf-8"> 5</head> 6<body> 7<header>ここにメニューとか</header> 8<div class="contents">##split##</div> 9<fotter>フッターの内容</fotter> 10</body> 11</html>

という感じで、htmlを2分割する場所の指定に「##split##」を入れてます。

cgiは

perl

1$tempfile= 'temp.html'; 2print "Content-type: text/html\n\n"; 3 4open(FILE,"$tempfile")||&error("No temp.html"); 5 @temp=<FILE>; 6 $temp="@temp"; 7 close(FILE); 8 ($temp_head,$temp_foot)=split(/##split##/,$temp); 9print "$skin_head\n"; 10 11■■■ ここに内容表示プログラム ■■■ 12 13print "$skin_foot\n"; 14

という感じでhtmlを読み込み・分割・ヘッダーを表示・内容を表示・フッターを表示するという形です。

phpでも同じようにしたいのですがhtmlを読み込み・分割・それぞれを表示するにはどのようにしたらいいのでしょうか?

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

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

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

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

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

guest

回答2

0

大昔のPHP普及期にも同じことやる人は多かったけど
PerlをそのままPHPに書き換えるなんてことはやらないほうがいい。
PHPには便利な関数があるんだからそれらを使えば簡単に実現できるのにPerlの真似すると意味なく難しくなるだけ。
file_get_contents()やstr_replace()やexplode()でできるだろう。
https://www.php.net/manual/ja/function.file-get-contents.php
https://www.php.net/manual/ja/function.str-replace.php
https://www.php.net/manual/ja/function.explode.php

そもそも発想が違う。
Perlは「Perl内でhtmlを組み立てる」
PHPは「html内にPHPを書ける」
↑これ自体遥か昔の話で今はPerlでもPHPでもこんな作り方はしない。入門レベルの初心者限定の話。

これはCSRFもないのでやめたほうがよさそう。
https://web-dev.xyz/php-originalmailform/

Googleフォーム使ったほうがマシ。調べれば分かるけどまともな企業でもGoogleフォーム使ってる。

投稿2021/01/20 02:51

kawax

総合スコア10377

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

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

0

Perlはどうだったか私も詳しくはないですが、
PHPでやっていきたいのでしたら、HTMLファイルを分割するのではなく
「テンプレートエンジン」を導入されたほうが良いでしょう。

Smarty,Twigなど主要フレームワークでも利用されているテンプレートエンジンがあります。

投稿2021/01/20 01:16

m.ts10806

総合スコア80861

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

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

tadano

2021/01/20 01:39

回答ありがとうございます。 自分で「php html テンプレート」で検索してテンプレートエンジンというものがいくつか出てきたのですが、それを実装できるだけphpを理解できていないです。 少しずつ慣れるためにも今回は上記質問の方法を試してみたいのでそちらでの回答をお願いします。
m.ts10806

2021/01/20 01:41

むしろ今回やろうとしているやり方のほうが難しいですよ。 ファイル操作も必要、置換も必要(しかも正規表現) 「別の言語と同じ組み方」はやめたほうが良いです。 似てるようで全く別のものですから。 まだ、includeとかで読み込んでechoされたほうが良いくらい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問