• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTMLファイルの書き換え)

PHPでHTMLファイルを変更する方法について

このQ&Aのポイント
  • PHPを使用して同じサーバー内の既存のHTMLファイルを変更する方法を知りたいです。
  • 具体的には、HTMLファイルの<title></title>内の文字列と、コメントアウトされている特定の範囲を変更したいです。
  • 現在は正規表現を使用してファイルのソースを変数に格納し、確認する作業を繰り返していますが、正規表現の理解が不十分でうまくいきません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.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; ========================== で、どうでしょうか。

mayu_chap
質問者

お礼

Suziさんへ こんばんは。早々のお返事ありがとう御座います。 無事解決出来ました! <h1></h1>タグ内では変換出来ていたのですが、<title></title>内では変換出来なかったり、<!--start--><!--end-->ではエラーとなっていたので、違うところを見直していました。 ご親切な対応に感謝いたします。ありがとう御座いました!

mayu_chap
質問者

補足

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

その他の回答 (1)

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

そのhtmlのソースが $temp に入っている、入れ替えたいタイトル文字が $txt_title に入っているとします。 <title>何かのタイトル文字</title> を <title>こんばんは</title> に変えるのなら $temp = str_replace("<title>.+?</title>", "<title>$txt_title</title>", $temp); " " で囲んでいるので、/ は \/ かもしれません。 <!--category1start--> も同様で入れ替えできると思います。

mayu_chap
質問者

お礼

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)); ?>

関連するQ&A