![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。お世話になっております。
ココのところ、質問ばかりで恐縮ですが・・タイトルにあるようにPHPにて既存のHTMLファイル(同じサーバー内)を変更する場合、どのようなソースになるのでしょうか?
<html>
<head>
<title></title>
</head>
<body>
<!--category1start-->
<!--category1end-->
<!--category2start-->
<!--category2end-->
</body>
</html>
以上のような構成のHTMLファイルがあり、PHPにて<title></title>内の文字列と、コメントアウトしてあるcategory1とcategory2の、各startからendの間を変更したいと考えてます。
今日も朝からずっと調べながら、正規表現を使いファイル全体のソースを変数に格納。確認のため変数を表示。といったことを繰り返しているのですが、正規表現の理解が乏しく、思ったような結果が得られずにいます。
お恥ずかしい質問とは思いますが、ご指導頂戴出来れば幸いです。宜しくお願い致します。
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;
==========================
で、どうでしょうか。
Suziさんへ
こんばんは。早々のお返事ありがとう御座います。
無事解決出来ました!
<h1></h1>タグ内では変換出来ていたのですが、<title></title>内では変換出来なかったり、<!--start--><!--end-->ではエラーとなっていたので、違うところを見直していました。
ご親切な対応に感謝いたします。ありがとう御座いました!
No.1
- 回答日時:
そのhtmlのソースが $temp に入っている、入れ替えたいタイトル文字が $txt_title に入っているとします。
<title>何かのタイトル文字</title>
を
<title>こんばんは</title>
に変えるのなら
$temp = str_replace("<title>.+?</title>", "<title>$txt_title</title>", $temp);
" " で囲んでいるので、/ は \/ かもしれません。
<!--category1start--> も同様で入れ替えできると思います。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP php ログイン 1 2022/11/01 00:24
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数にHTMLを代入する場合
-
[php][正規表現]タグ以外を削除...
-
eclipseより、タスク・タグの使...
-
PHPの正規表現でHTMLタグの内容...
-
オリジナルタグをHTMLタグに置...
-
str_get_htmlがこける原因を知...
-
VBSでのhtmlタグ要素名の置換
-
phpの正規表現でstyle="●●"を削...
-
htmlでflashを開く、画面サイズ...
-
正規表現で複数行に渡る範囲を...
-
正規表現でタグの置換をしたい...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
文字列の括弧について(初心者)
-
エクセルVBA 文字列領域が不足...
-
全角括弧と全角読点の間隔を狭...
-
C++でのCRLFについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
変数にHTMLを代入する場合
-
Nvuで作成したhtmlをコピペして...
-
srcに「banner.」で始まるファ...
-
[php][正規表現]タグ以外を削除...
-
PHPの正規表現でHTMLタグの内容...
-
htmlでflashを開く、画面サイズ...
-
csobjというタグについて
-
正規表現でHTMLタグの属性まで...
-
正規表現でタグの置換をしたい...
-
HTMLファイルの書き換え
-
★PHP★フォーム登録時にタグを読...
-
PHP4→5にアップグレードしたら...
-
オリジナルタグをHTMLタグに置...
-
print "<img src=\\"0.jpg\\/>\...
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
PHP Webページのタイトルを取得...
-
リッチテキストエディターでの...
-
MP3のコメントタグやSYLTの詳細
おすすめ情報