使用PHP,我该如何只替换段引用的blockquote元素的子元素?我需要暂时转换这些段落元素,而我运行一些其他功能,然后一旦这些功能完成运行,将它们更改回“p”“/ p”元素。 (即改变 “P”, “/ P” 到 “PTEMP” “/ PTEMP” 或类似的东西。)如何仅替换块引用元素的子段落?
这里是我的代码示例:
<blockquote>
<div>
<p class="replace-this-element">Some Text</p>
</div>
</blockquote>
<p class="do-not-replace-this-element">Some Text</p>
<p class="do-not-replace-this-element">Some Text</p>
<blockquote>
<div>
<p class="replace-this-element">Some Text</p>
</div>
</blockquote>
<p class="do-not-replace-this-element">Some Text</p>
<p class="do-not-replace-this-element">Some Text</p>
<blockquote>
<div>
<p class="replace-this-element">Some Text</p>
</div>
</blockquote>
编辑:谢谢你的问题,这里有更多的信息。 。 。我正在改变使用PHP的drupal节点的内容字段的呈现标记,所以它发生在服务器端。我在第四段之后插入代码,在客户端浏览器中构建DOM之前需要插入代码,所以不能使用js或jQuery。我需要忽略嵌套在块引用中的段落,以便代码不嵌入块引用中。
我的想法是更改blockquotes中的p元素,以便在第4段之后插入新代码时忽略它们。插入代码后,将它们更改回p元素。但肯定可能有更好的方法来忽略嵌套的p元素。
以下是其中要求,并通过Drupal的template.php文件中改变的标记代码:
<?php
function mytheme_preprocess_node(&$variables) {
$codeToInsert = '<div>A bunch of stuff to add after the 4th paragraph.</div>';
$contentToAlter = $variables['content']['body'][0]['#markup'];
$contentToAlter = explode("<p>", $contentToAlter);
$contentToAlter[3] .= $codeToInsert ;
$contentToAlter = implode($contentToAlter, "<p>");
$variables['content']['body'][0]['#markup'] = $contentToAlter;
}
如果我理解正确,您想PHP来取代在运行时的元素。 PHP是服务器端,相反,我会建议使用JQuery/Javascript – Jesus
您想将此HTML代码提供给PHP代码并进行修改,或者您想在浏览器中对其进行修改吗? –