こんにちは。お世話になっております。
ココのところ、質問ばかりで恐縮ですが・・タイトルにあるように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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSSで、<a><pre>タグだけを有効...
-
htmlspecialcharsで特定のタグ...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
文字の入力で横バー上段、中断...
-
ソースコードの1行が長いとき...
-
JavaMail,本文中の改行について
-
文字列のアスタリスク置換
-
エクセルのCOUNTIFが正しくカウ...
-
preg_matchでエラーが出ます。
-
メッセージボックスで1025文字...
-
【VBA】エクセルで最後の不要な...
-
秀丸の正規表現で複数行にわた...
-
COBOLの改行
-
最終行の改行について
-
半角記号、全角記号を含む正規...
-
電話番号のチェック ハイフン...
-
C++で空Enterの入力を判...
-
VBScriptである文字列に半角文...
-
awkで改行を除いて文字列を抜き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数にHTMLを代入する場合
-
PHPに書く記述を教えてください
-
PHPの正規表現でHTMLタグの内容...
-
javascriptの正規表現でhtmlか...
-
ASP.NET(C#)とhtmlの#include
-
タグの中だけ改行を除去したい
-
正規表現で複数行に渡る範囲を...
-
htmlでflashを開く、画面サイズ...
-
横1行に2種類の画像を交互に5...
-
Strutsでリンクを動的に生成したい
-
正規表現で一発置換できるでし...
-
reuterの記事をbeautiful.soup....
-
phpの正規表現でstyle="●●"を削...
-
xmlとhtmlの違いについて
-
HTMLを組み込む場合。
-
alt属性を残してタグを排除
-
正規表現でタグの置換をしたい...
-
JSFタグのfタグとは
-
URLの結合
-
htmlのソースからテーブルの値...
おすすめ情報