- ベストアンサー
preg_replace() で特定の文字の後から処理させたい
preg_replace()でhtmlデータが入っている変数を扱っているのですが、ヘッダーを無視して<body>からその作業を開始させるということは可能でしょうか? $data = stristr($data, </head>); $data = preg_replace($pattern, $change, $data); としてしまうとヘッダーを削除してしまいます。 何か良い方法をご存知の方おられましたらどうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一度head側とbody側に分けて保持しておくというのはどうでしょうか? <?php # htmlデータ $data = <<<EOF <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"/> <title>教えて!goo preg_replace() で特定の文字の後から処理させたい</title> </head> <body> てすとhtml </body> </html> EOF; # "てすと" を "あいうえお" に置換する準備 $pattern = '/てすと/'; $change = 'あいうえお'; # </head>終了タグを境に2つに分ける $data = preg_split('/<\/head>/',$data,2); # <head>ではない方を置換処理 $data[1] = preg_replace($pattern, $change, $data[1]); # </head>で繋いで出力 print $data[0].'</head>'.$data[1]; ?>
その他の回答 (1)
- karace
- ベストアンサー率45% (9/20)
No.1の者です。 見落としてました。 > ~<body>からその作業を開始させるということは可能でしょうか? ということなので、No.1のサンプルコードは</head>→<body>にした方がより良いかもしれないです。
お礼
補足していただき感謝します。
お礼
ありがとうございます。大変参考になります。