dポイントプレゼントキャンペーン実施中!

こんにちは。お世話になっております。
ココのところ、質問ばかりで恐縮ですが・・タイトルにあるようにPHPにて既存のHTMLファイル(同じサーバー内)を変更する場合、どのようなソースになるのでしょうか?

<html>
<head>
<title></title>
</head>
<body>
<!--category1start-->
<!--category1end-->

<!--category2start-->
<!--category2end-->
</body>
</html>

以上のような構成のHTMLファイルがあり、PHPにて<title></title>内の文字列と、コメントアウトしてあるcategory1とcategory2の、各startからendの間を変更したいと考えてます。

今日も朝からずっと調べながら、正規表現を使いファイル全体のソースを変数に格納。確認のため変数を表示。といったことを繰り返しているのですが、正規表現の理解が乏しく、思ったような結果が得られずにいます。
お恥ずかしい質問とは思いますが、ご指導頂戴出来れば幸いです。宜しくお願い致します。

A 回答 (2件)

済みません、str_replace はユニコード(utf-8とか)でないと日本語に対応していないのを忘れていました。


mb_ereg_replace の方です。

$addfname= mb_ereg_replace('<title>.+?</title>', "<title>$txt_title</title>", $addfname);
とかです。

mayu_chapさんのスクリプトをお借りすれば
==========================
$addfname = "./test.html";

$txt_title = 'テスト';

$addstr = file_get_contents($addfname);

$fp=@fopen("$addfname","r");

$i = '';
if($fp){
$main = "";
while (!feof($fp)){
$i++;
$main .= fgets($fp,1000);
}
}

$main = mb_ereg_replace('<title>.+?</title>', "<title>$txt_title</title>", $main);
print $main;
==========================

で、どうでしょうか。

この回答への補足

すみません。解決済みとするのを忘れていました。

補足日時:2008/08/19 00:44
    • good
    • 0
この回答へのお礼

Suziさんへ

こんばんは。早々のお返事ありがとう御座います。
無事解決出来ました!

<h1></h1>タグ内では変換出来ていたのですが、<title></title>内では変換出来なかったり、<!--start--><!--end-->ではエラーとなっていたので、違うところを見直していました。

ご親切な対応に感謝いたします。ありがとう御座いました!

お礼日時:2008/06/16 00:40

そのhtmlのソースが $temp に入っている、入れ替えたいタイトル文字が $txt_title に入っているとします。



<title>何かのタイトル文字</title>

<title>こんばんは</title>
に変えるのなら

$temp = str_replace("<title>.+?</title>", "<title>$txt_title</title>", $temp);

" " で囲んでいるので、/ は \/ かもしれません。
<!--category1start--> も同様で入れ替えできると思います。
    • good
    • 0
この回答へのお礼

Suziさんへ

はじめまして、こんばんは。早速のお返事をありがとう御座います!
お教えいただいたSuziさんソースを元に、以下のようにしてみましたが、上手く行きません。
htmlファイルを変数に入れる辺りから可笑しいのかな?とも思い、色々と変更しているものの、どれも同じ結果しか返ってきません。(設置済みのファイルが表示されるだけ)

以下、テストで行っているソースをそのまま貼り付けますので、可笑しなところがあったらご指摘願えませんでしょうか?
宜しくお願い致します。

<?php
$addfname = "./test.html";

//$addstr = file_get_contents($addfname);

//$fp=@fopen("$addfname","r");
//if($fp){
//$main = "";
//while (!feof($fp))
//{
//$main .= fgets($fp,1000);
//}
//}
$main= join('', file( $addfname));

$txt_title = "テスト";

$main = str_replace("<title>.+?<\/title>", "<title>$txt_title</title>", $main);

echo $main;
//echo nl2br(htmlspecialchars($main));
?>

お礼日時:2008/06/15 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!