1

我想知道如果我有一个 HTML 页面,我将如何使用 php 删除一个元素,通过它的名称或 id。所以我可以有这样的 HTML 代码

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

或类似的东西,网络浏览器只会显示一个没有跨度的空div。这是可能的,还是只使用javascript来做这个更有用。

基本上,我要说的是在页面编译之前,你可以根据一些条件从中删除元素,而不是在页面加载之后

4

4 回答 4

7

您似乎对服务器端客户端脚本语言感到困惑。

PHP 是一种服务器端语言,这意味着一旦编译完成,就不能在用户浏览器中动态更改它。

另一方面,JavaScript 是一种客户端脚本语言,可以动态地操作页面上的内容。

因此,一旦页面被渲染,你要求做的事情是不可能使用纯 PHP 的。

您可以使用 AJAX 技术从已经在使用 JavaScript 的浏览器中的页面中调用 PHP 脚本。然后,您可以使用由 AJAX 请求调用的 PHP 脚本来返回可用于更新页面特定部分的内容,但是没有一种完全不涉及 JavaScript 的纯 PHP 方式来执行此操作。

于 2013-03-26T00:58:17.523 回答
4

只是一个想法...
您是否考虑过 PHP XPath 查询?

// 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>

// PHP 你的 HTML,在这个例子中是一个字符串。

<?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 我无法很好地解释这一点。我希望别人可以吗?
// 但是查询找到了包含属性 id 和 'todelete' 的跨度
// 我猜它输出为 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

您不能使用 php 删除 DOM 元素。您需要使用 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

您不能真正使用 php 删除已呈现的 html,但您可以使用 php 代码中的条件来选择性地呈现 html 的某些部分,具体取决于您在 php 中执行的测试的结果...

于 2013-07-02T12:03:12.117 回答