htmlのセクションをPHPに置き換える

PHPで正規表現を使用してテンプレートHTMLファイルのセクションを置き換えようとしています。これまで私はこれを持っています:

$docText = OLD_TEXT;
$text = NEW_TEXT;
$docText = preg_replace('#<div id="information">[<div>(?R)</div>]*</div>#i x U',
                         $text,
                         $docText,
                         1);

// Save file

現時点では、それは一致するものではありません。目標は外側div全体を置き換えることです。つまり、他のすべてのタグが終了タグではないことを知る必要があります。

1
少なくとも関連性があると思われる週の最初の質問ですが、誰も愚かなリンクを投稿しません。 - そうですね。それは正規表現でなければならないのですか?または、より簡単な提案が可能ですか? - とにかく、?R の構文を文字クラスとして囲むのは間違っています。あなたはどこを見つけましたか?
追加された 著者 mario,
$ textの例を投稿できますか?
追加された 著者 Jaison Erick,
簡単なオプションは問題ありません。私はもともとDOMDocumentを試しましたが、それがうまくいかなかったのですが、私は文字列を直接操作しようと決めました。私がリンクを投稿するはずだったら申し訳ありません。 StackOverflowに投稿したのはこれが初めてです。
追加された 著者 DaBritishyankee,

1 答え

私はあなたが欲しいものを理解するのか分からないが、私はあなたがこれをやろうとしていると思う:

$html = <<
            <div>Hi!</div>
        </div>
        <div id="otherInformation">Hi again!</div>
    </body>
</html>
HTML;

$replace = '<div id="newInformation">Bye!</div>';

$dom    = new DOMDocument();
$dom->loadHTML($html);

$tmp     = $dom->createTextNode('{newContent}');

$xpath   = new DOMXPath($dom);

$divInformation = $xpath->query('//div[@id="information"]');
$divInformation->item(0)->parentNode->replaceChild($tmp, $divInformation->item(0));

$newHTML = str_replace('{newContent}', $replace, $dom->saveHTML());
var_dump($newHTML);

Can I ask why?

2
追加された
ですから、永続性はどうですか?私はあなたがデータベースを使用してそれを取る?これは、ポストして保存するために textarea の内容をエコーする理由ですか?
追加された 著者 kasimir,
私はコンテンツ管理システムを作成しようとしています。これまで私は自分のサイトでタグの情報をコピーし、それをtextAreaにエコーしました。私はこれをPHPページに送り、情報ページを新しい情報に置き換えます。私は車輪を再発明するかもしれないように感じるが、それは私の頭の中で意味がある。
追加された 著者 DaBritishyankee,
それは数ヶ月後で、私はちょうどこのポストを確認しました。たくさんの仕事の後、私は最終的にこれをFy-のおかげで働かせました。しかし、それ以来私は別のサイトを作っていましたが、代わりにMYSQLデータベースを使用しました。そんなに簡単!テンプレート内のテキストを置き換えることで、動的ページごとにまったく新しいファイルを作成していましたが(私は今なぜ自分自身に尋ねます)、MYSQLはこれをもっと簡単にします。まあ、最後はうまくいった。学んだ教訓。
追加された 著者 DaBritishyankee,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com