すみません、下記はインクルードの元のPHPファイルです。
これでインクルードすると CSSのリンクと画像のリンク
のところでParse error: syntax error, unexpected T_STRING
というエラーが出ます。
$HTMLHEADER の中を単純な文字にするとエラーが出ないという
ことはインクルードそのものの構文は間違っていないということ
だと思います。
インクルードの場合リンクはどうすればいいんでしょうか?
<?php
//ページタイトル
$APPTITLE = "関東近県の格安出張";
//ヘッダ部
$HTMLHEADER = "
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=utf-8'>
<META http-equiv='Content-Style-Type' content='text/css'>
<TITLE>" . $APPTITLE . "</TITLE>
<link href="css/basic.css" rel="stylesheet" type="text/css" media="all" />
</HEAD>
<BODY>
<TABLE width='100%' bgcolor='#ff8000'>
<TR>
<TD>
<div><img src="images/head.jpg" alt="" /></div>
<div><img src="images/main.jpg" alt="" /></div>
<ul class="u">
<li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li>
</ul>
</TD>
</TR>
</TABLE>";
//フッタ部
$HTMLFOOTER = "</BODY>
</HTML>";
?>
No.4ベストアンサー
- 回答日時:
まずはお詫びを。
09/09/15 11:16、09/09/16 23:31の自分の投稿ですが、
質問内容を読み誤っていたことに気がつきました。
大変申し訳ありません。一旦忘れてください。
--------------------------------------------------
ヘッダー部分、フッター部分のHTMLをそれぞれ格納した
$HTMLHEADER,$HTMLFOOTERという変数を作成するスクリプトを
各ページで読み込むことで
フォーマットの共通化を実現したいということですね。
現在作成しているスクリプトの手直しを最小限に抑えるなら、
ダブルクオーテーションの使い方を見直すのが最短の解決策です。
具体的には、ご質問にあるとおり、
<li>
<a href="index.html">
<img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" />
</a>
</li>
にかかわる部分なのですが、エラー発生原因に特化してぐっと簡略化すると
$HTMLHEADER = "<a href="index.html">";
という構造です。
「index.html」という文字列の直前で、$HTMLHEADERの範囲が「"」で閉じられてしまっています。
「"」を含む文字を変数に代入する場合は、「\」を使ってエスケープする必要があります。
$HTMLHEADER = "<a href=\"index.html\">";
こうすることで、「<a href="index.html">」という文字列が$HTMLHEADERに格納されます。
と、ここまでで内容の実現はできると思うので、以下補足です。
【補足(1)】
今回の場合、$HTMLHEADER,$HTMLFOOTERに格納する値は
複数行にまたがる長い文字列になります。
通常、このような長い文字列を使用する場合、
yambejpさんが示していただいたように
ヒアドキュメントを使用することができます。
しかし、ヒアドキュメントの中では、PHPの変数を使用することができません。
$HEADERHTMLの中で、「$APPTITLE」を使っているので今回は使用できないようです。
【補足(2)】
今回の共通フォーマットの仕組みですが
ヘッダー、フッターそれぞれのincludeファイルを分割すると
それぞれのファイルの中身はほぼ純粋なHTMLのみで記述することができて
もっとすっきりできるんじゃないかな、と思っています。
コンテンツを生成しているファイルでは、header.php、footer.phpを
それぞれ読み込みます。
[header.php]
--------------------------------------------------
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=utf-8'>
<META http-equiv='Content-Style-Type' content='text/css'>
<TITLE><?php echo $APPTITLE;?></TITLE>
<link href="css/basic.css" rel="stylesheet" type="text/css" media="all" />
</HEAD>
<BODY>
<TABLE width='100%' bgcolor='#ff8000'>
<TR>
<TD>
<div><img src="images/head.jpg" alt="" /></div>
<div><img src="images/main.jpg" alt="" /></div>
<ul class="u">
<li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li>
</ul>
</TD>
</TR>
</TABLE>
--------------------------------------------------
[footer.php]
--------------------------------------------------
</BODY>
</HTML>
--------------------------------------------------
[content_a.php]
--------------------------------------------------
<?php
//処理ロジック
//$APPTITLEなどの設定
?>
<?
//コンテンツ部分を画面に表示する前に
//ヘッダーを読み込みます。
include'header.php';
?>
<div>
コンテンツAを記述
</div>
<?
//コンテンツ部分を画面に表示した後
//フッターを読み込みます。
includ'footer.php';
?>
--------------------------------------------------
参考にしてみてください。
大きく回り道をしてしまい、大変失礼いたしました。
この回答への補足
seimurakamさん、長いお時間を割いていただき恐縮です。
最後に示していただいた方法が一番間違えがないと思います。
ありがとうございました。
本筋と外れるかもしれませんが、気になるところがあります。
09/09/15 11:16 にご説明いただいた、
<?php
//ページタイトル
$APPTITLE = "関東近県の格安出張";
//ヘッダ部
$HTMLHEADER = "";
?>
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<HTML>・・・・・・
を試しにやってみたのですが、print $HTMLHEADER;
で<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>以下が反映されました。
確認ですが、以下のようにした場合、php以下の構文が
$HTMLHEADERに代入されるのでしょうか?
<?php
//ヘッダ部
$HTMLHEADER = "";
?>
No.3
- 回答日時:
そうではありません。
説明するのに時間がかかりそうなので
しばらくお付き合いください。
語幣があるのは承知ですが、
【PHPで動的WEBページを作成できる】
という用途に限って話をします。
まず最初にですが、
『PHPでHTMLを記述するには、HTMLソースを一度PHPの変数に格納して、
最後にechoしなければならない』
と思っておられるのだとしたら、
それは大きな誤解です。
PHPスクリプトは、<?php ~ ?>でくくった部分のみが
PHPのスクリプトとして処理されます。
それ以外の部分は、HTMLとして解釈されます。
以下のソースaaa.phpで確認できます。
aaa.php
------------------------------------------------------------------
<?php
//PHPでは何も行いません。
?>
<html>
<head>
<title>aaa.php</title>
</head>
<body>
<h1>これはaaa.phpです。</h1>
</body>
</html>
------------------------------------------------------------------
<?php~?>を取り除いてしまえば、HTMLとなんら変わりはありません。
このファイルをWEBサーバにアップしてブラウザで確認すると、
<html>以降をaaa.htmlなどに記述した場合と同じように動作します。
これでは普通のPHPと同じですので、もう少し発展させてみます。
<h1>タグの中に、ページロード時の時刻を表示するよう変更します。
PHPには、「通常のHTMLソースの中に埋め込んで使用できるスクリプト言語である」という特徴があります。
これは、HTMLの中で、PHP(の変数やループ処理、if分岐など)を使いたい部分に対して、
<?php~?>を埋め込んでプログラム処理内容を記述できる、ということです。
以下のような使い方をします。
bbb.php
------------------------------------------------------------------
<?php
//現在時刻を取得します。
$now = date('Y/m/d H:i:s');
?>
<html>
<head>
<title>aaa.php</title>
</head>
<body>
<h1>現在の時刻は<?php echo $now;?>です。</h1>
</body>
</html>
------------------------------------------------------------------
ここまでのところ、現状の理解と相違ないでしょうか?
seimurakamさんご丁寧な説明ありがとうございます。
>ここまでのところ、現状の理解と相違ないでしょうか?
相違ないです。
No.2
- 回答日時:
PHPスクリプト部分とHTML記述部分が
混在しているのが原因です。
イメージとしては、通常通りHTMLを作成し、
変数などのPHPスクリプトを埋め込みたい部分のみ
<?php ?>で囲んでPHPの記述をする、
という手順で進めると、誤った記述が少ないと思います。
以下、修正したサンプルをのせておきますのでご確認ください。
<?php
//ページタイトル
$APPTITLE = "関東近県の格安出張";
//ヘッダ部
$HTMLHEADER = "";
?>
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=utf-8'>
<META http-equiv='Content-Style-Type' content='text/css'>
<TITLE><?php echo $APPTITLE ?></TITLE>
<link href="css/basic.css" rel="stylesheet" type="text/css" media="all" />
</HEAD>
<BODY>
<TABLE width='100%' bgcolor='#ff8000'>
<TR>
<TD>
<div><img src="images/head.jpg" alt="" /></div>
<div><img src="images/main.jpg" alt="" /></div>
<ul class="u">
<li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li>
</ul>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
この回答への補足
seimurakamさんありがとうございます。確認ですが
$HTMLHEADER = ""; でその下のhtml記述が代入されるわけですか?
すると</TABLE>の下にフッターを設けインクルードしたい場合
<?php
$footer = "";
?>
<div>ここはフッターです。</div>
</BODY>
</HTML>
でよろしいですか?
No.1
- 回答日時:
>$HTMLHEADER = "
これはダブルコーテーションで区切られた文字列を$HTMLHEADERに
代入しています。
ずっとみていくとその文字列の中にダブルコーテーションが
でてきます。それがパースエラーをおこしています。
こういう場合はヒアドキュメントというものを使うと便利です。
$HTMLHEADER = <<<eof
・・・・
・・・・
・・・・
eof;
とするといいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでPEAR::DBを使っているので...
-
phpでcookieがうまく保存されない
-
PHPSpreadsheetを使って関数を...
-
index.phpに入るには、どうすれ...
-
index.phpって何ですか? 具体...
-
アンドロイドスマホでのphp ech...
-
PostgreSQLからCSV形式でエクス...
-
PHPで画像の渡しが上手く行きま...
-
PHP8を使うと、大量のWarningが...
-
重複を防ぐ記述について教えて...
-
連投防止
-
PHP MySql ページング
-
phpでクラスのメソッドで同名の...
-
ECCUBE4のページ管理でPHPを実...
-
フォームで戻った際に入力済み...
-
$_SESSIONに渡した後はそのまま...
-
PHP MySQLに画像を直接保存
-
PHP でメールフォームを作成したい
-
PHPでのパスワード制限のセキュ...
-
reuterの記事をbeautiful.soup....
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
なんでブラウザでPHPを動かすた...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
PHPSpreadsheetを使って関数を...
-
php 入力画面から確認表示画面...
-
PHPのエラーの解消法について教...
-
掲示板のセキュリティについて...
-
php 完了画面の送信メールのコ...
-
PHPのセッション有効期限について
-
掲示板を作成しておりアップロ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
重複を防ぐ記述について教えて...
-
php 確認表示画面で値をSESSION...
-
ファイルアップロードに関して...
-
メールフォームのタイトルが文...
-
フォームで戻った際に入力済み...
-
PHPで訪問回数を表示するカウン...
-
アップロード画像数でCSSを分け...
おすすめ情報