人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現・置き換えについてお願いします

PHP4(PHP5ではないです)でHTMLファイル内の文字列を置換える方法をおしえてください。
様々な形の<body>タグの末尾にタグ<div id="head">xxx</div>を挿入するイメージです。
やりたい事は過去記事 http://q.hatena.ne.jp/1138429819 のPHP版です。

■ 検索文字列のパターン(例)
1.<body>
2.<body onload="readCookie();">
3.<BODY BGCOLOR="#ffffff" ALINK="#0000FF">

■ 置換え後の文字列
1.<body><div id="head">xxx</div>
2.<body onload="readCookie();"><div id="head">xxx</div>
3.<BODY BGCOLOR="#ffffff" ALINK="#0000FF"><div id="head">xxx</div>


※同時に大量の置換えが発生するためになるべく
もっとも高速に動作すると思われる置き換え命令をお願いします。

環境 Apache 2.2.4 / PHP 4.4.7


●質問者: urawareds
●カテゴリ:ウェブ制作
✍キーワード:Apache HTML PHP イメージ タグ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●79ポイント

回答

$b = preg_replace("/(<body[^>]*>)/i","\\1<div id=\"head\">xxx</div>",$a);

説明1

"/(<body[^>]*>)/"
で
1.<body>
2.<body onload="readCookie();">
の両方に対応できます。

"/(<body[^>]*>)/i"
で大文字小文字を同列に扱うようになるので
3.<BODY BGCOLOR="#ffffff" ALINK="#0000FF">
にも対応できるようになります。

説明2

"\\1<div id=\"head\">xxx</div>"
\はエスケープコードです。
\1は前述の(かっこ)内の文字列が入ります。

動作確認せずに直接書いてますが、以上参考になれば、、、

◎質問者からの返答

ありがとうございます

思った通りに動作しました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ