1

HTMLページがあるかどうか疑問に思っていたのですが、phpを使用して、その名前またはIDで要素を削除するにはどうすればよいですか。だから私はこのようなHTMLコードを持つことができました

<div>
    <span id='todelete' name='todelete'>This should be deleted</span>
    <?php
       delete('todelete');
    ?>
</div>

またはそのようなもので、Webブラウザはスパンなしで空のdivを表示します。それは可能ですか、それともこれにjavascriptを使用する方が便利ですか。

基本的に、私が言っているのは、ページがコンパイルされる前ですが、ページがロードされた後ではなく、いくつかの条件に基づいて、ページから要素を削除できますか?

4

4 に答える 4

7

サーバー側クライアント側のスクリプト言語が混同されているようです。

PHPはサーバー側の言語です。つまり、一度コンパイルすると、ユーザーのブラウザーで動的に変更することはできません。

一方、JavaScriptはクライアント側のスクリプト言語であり、ページの内容を動的に操作できます。

したがって、ページがレンダリングされた後は、純粋なPHPを使用して実行しようとしていることは不可能です。

AJAXテクノロジーを使用して、JavaScriptを使用してブラウザーに既に存在するページ内からPHPスクリプトを呼び出すことができます。次に、AJAXリクエストによって呼び出されるPHPスクリプトを使用して、ページの特定のセクションを更新するために使用できるものを返すことができますが、これを行うためにJavaScriptをまったく使用しない純粋なPHPの方法はありません。

于 2013-03-26T00:58:17.523 に答える
4

ただのアイデア...
PHPXPathクエリについて考えたことはありますか?

// CSS は重要ではありません

<style>
    div { border:1px solid rgba(255,0,0,0.5); background:rgba(255,0,0,0.1) }
    span{ border:1px solid rgba(0,255,0,0.5); margin:0px 2px; padding:0 20px; 
    background:rgba(0,255,0,0.5)}
</style>

// HTML、この例では文字列をPHPします。

<?php
$string = '
   <div>
       <span id="keep"> John </span>
       <span id="keep"> Susane </span>
       <span id="todelete"> Tree </span>
       <span id="keep"> Karin </span>
       <span id="keep"> Jack </span>
   </div>
';

echo $string;

// PHP は新しいクラスDOMDocumentを開始し、クエリを実行します

$doc = new DOMDocument;
@$doc->loadHTML($string);

$xpath = new DOMXPath($doc);
$found = $xpath->query("//span[contains(@id, 'todelete')]");

//より多くのPHP これをうまく説明することはできません。他の誰かができることを願っていますか?
//しかし、クエリは'todelete'の属性IDを含むスパンを見つけました
//HTMLとして出力すると思います

$element = $found[0]->ownerDocument->saveXML($found[0]);
/* ##### <span id="todelete"> Tree </span> ##### */
echo '<p>delete:' .  $element . '<p>'; 

//最後にPHP 文字列で見つけたものを何も置き換えない

echo str_replace($element, '' , $string);

?>

お役に立てば幸いです。XPathは非常に強力で、忘れられがちです。試してみる。私はそれがあなたのニーズに十分であることを願っています。上記のすべてのコードをコピーして、.phpドキュメントに貼り付けることができます。

于 2018-11-24T21:55:55.420 に答える
3

DOM要素を削除するためにphpを使用することはできません。javascriptまたはjQueryでそれを行う必要があります。

javascriptを使えばそうなるでしょう

var element = document.getElementById("todelete");
element.parentNode.removeChild(element);

そしてjQueryを使って(ライブラリを含めた後)

$(document).ready(function() {
    $("#todelete").remove();
});
于 2017-05-16T15:10:28.447 に答える
1

一度レンダリングされたhtmlを実際にphpを使用して削除することはできませんが、phpコードの条件を使用して、phpで実行したテストの結果に応じてhtmlの特定のセクションを選択的にレンダリングできます...

于 2013-07-02T12:03:12.117 に答える