私は自分のサイトのページ(blue.php)用に構築した既存のPHPファイルを取得しようとしています。そのページの別のバージョンを作成します(blue-2.php)。xPath/DOMでコンテンツを含む/除外> PHP
私は例えば、私は属性を変更し、そして私の変更は青2.php以内に正しく反映することができ
$documentSource = file_get_contents("http://mysite.com/blue.php");
と私の既存の.phpファイルに引っ張っに成功してきた:
$xpath->query("//div[@class='walk']");
foreach ($xpath->query("//div[@class='walk']") as $node) {
$source = $node->getAttribute('class');
$node->setAttribute('class', 'run');
私の現在のコードでは、上の例のように変更しています。私が本当にやりたいことは、新しいPHPページ(blue-2.php)に特定のdivやその他の要素が表示されないようにすることです。
私のコードの最後にecho $doc->saveHTML();
を使用すると、blue.phpからのすべてがblue-2.phpの出力に含まれているように見えます。要素は、XPathで、私の新しいページに表示
は、私が(包含および除外)$documentSource = file_get_contents("http://mysite.com/blue.php");
を使用してページ全体を解析し、を選択し、選択することができ:
だから私の質問の本質はありますか?あるいは、私は上記のdivクラスwalk/runの例のように、既存のコードに変更を加えるだけに制限されていますか?
ありがとうございます。
どの変換を行うかによって、XPathとDOMよりもXSLを使用する方がよい場合があります。 –
ちょっとフランシス、コメントありがとう。 XSLがxPath/DOMよりも良い選択である理由を教えてください。既存のPHPファイルをXMLファイルに変換してから、XSLを使用するために元に戻す必要はありませんか? – rocky
PHP 'DOMDocument'インスタンスを[' XSLTProcessor'](http://php.net/manual/en/class.xsltprocessor.php)で使用してください。変換ステップはありません。 XSLは「この種のものを追加/変更/削除する以外は同じものを維持する」パターン([このアイデンティティーテンプレートチュートリアル](http://xmlplease.com/xsltidentity)を参照)を非常に簡単に表現できます。ここで説明するものよりも複雑なことをしているのであれば、XSLはよりコンパクトで自然な方法かもしれません。 –