5

私はhtmlファイルを持っています。そのファイルのクラスでindex.phpコンテンツを取得し、別のテキストに置き換えたいと思います。どうすればそれを達成できますか?<div>main

HTML のサンプル コンテンツ:

<div class="main">
Replace this text with some code!
</div>

この div 内のコンテンツを php を使用して取得し、別のコンテンツに置き換えます。しかし、これを行う方法がわかりません。

更新: JavaScript を使用したクライアント側のトリックを認識しています。私はこれをサーバー側でやりたいと思っています。また、ファイルはphpではなくhtmlになります。正確な方法はわかりませんが、phpでhtmlを開いてこれを行う必要があると思います。

これは、xpath や html dom パーサーなどで実行できますか? グーグル検索でこれらの用語が得られましたが、実際に何であるかはわかりません.

4

3 に答える 3

17

これを行うには、 PHP のDOMクラス/関数を使用できます。

ドキュメントを作成/ロードすることから始めます。

$d = new DOMDocument();
$d->loadHTML($yourWellFormedHTMLString);

次に、変更するドキュメント ノードを見つけます。XPath を使用してこれを行うことができます。

$xpathsearch = new DOMXPath($d);
$nodes = $xpathsearch->query('//div[contains(@class,'main')]');  

次に、一致するノードを反復処理し、内部に新しいノードを作成します。

foreach($nodes as $node) {
    $newnode = $d->createDocumentFragment();
    $newnode->appendXML($yourCodeYouWantToFillIn);
    $node->appendChild($newnode);
}

開発の初期段階でライブラリをいじっても構わない場合は、CAST (content-addressed style templating) を検討してください。あなたが説明していることを実行するようにほとんど設計されています。他に何もないとしても、ソース内を覗いて例を見ることができます。

(注: 賢い人なら、それがCSS セレクターとまったく同じ//div[contains(@class,'main')]ではないことに気付くと思います... class 属性には複数のクラスを含めることができるためです。これを正確に行うのは扱いにくいので、人々にそれを紹介するときは単純化された表現. この道をたどる人が最終的にこの権利を処理するのに十分なほどxpathをよく知ることが最善であるとしても. または, クラスの代わりにids moreを使用する. :)div.main

于 2010-12-13T10:14:32.180 に答える
1

静的フラグメントを含める必要がある場合

<div class="main">
<?php readfile ('path/to/some/file'); ?>
</div>

別のPHPスクリプトの出力を含める必要がある場合

<div class="main">
<?php include ('path/to/some/file') ?>
</div>
于 2010-12-13T09:54:20.800 に答える
0

ファイルを次のように読み取ります。

$fileContents=file_get_contents($file_path);

http://php.net/manual/en/function.file-get-contents.php

次に、div コンテンツを検索して置き換えます。

$newHtmlContent=preg_replace("/<div class=\"main\">(.*)</div>/i",'<div class="main">Some text here</div>',$fileContents);

http://php.net/manual/en/function.preg-replace.php

私の正規表現は少しさびていますが、ここで拾うことができます: http://www.regular-expressions.info/tutorial.html

次に、新しいコンテンツを保存します。

file_put_contents($file_path,$newHtmlContent);

http://www.php.net/manual/en/function.file-put-contents.php

または、これを使用してファイルを解析することもできます: http://simplehtmldom.sourceforge.net/ ただし、適切な形式である必要があります。

メイン div のコンテンツが別の div である場合、上記が失敗するため、このバージョンをお勧めします...

于 2010-12-13T09:28:19.267 に答える