繁体   English   中英

如何仅替换块引用元素的子段落?

[英]How do I replace only the paragraphs which are children of a blockquote element?

使用 PHP,如何仅替换作为块引用元素的子元素的段落? 我需要在运行其他一些函数时临时转换这些段落元素,然后在这些函数完成运行后将它们改回“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 之前插入的第 4 段之后插入代码,因此不能为此使用 js 或 jQuery。 我需要忽略嵌套在块引用中的段落,以便代码不会嵌入到块引用中。

我的想法是更改块引用中的 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;
}

你的问题很模糊,所以我很难得出你到底在追求什么的结论,但这是有效的。

使用 JQuery,它会更改replace-this-element并将其转换为h1 (我这样做是因为您指定要将这些元素更改为 ptemp 但 ptemp 不是 html 识别的元素),然后将其交换回来。 如果您运行该代码段,您将看不到任何事情发生,因为othermethod()里面没有任何内容。

 replace_elements(); other_method(); replace_elements_back(); function replace_elements() { $("blockquote div").html('<h1 class="replace-this-element">Some Text </h1>'); } function other_method() { } function replace_elements_back() { $("blockquote div").html('<p class="replace-this-element">Some Text </p>'); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <blockquote> <div> <p class="replace-this-element">Some Text</p> </div> </blockquote> <p class="do-not-replace-this-element">Some Text</p> <blockquote> <div> <p class="replace-this-element">Some Text</p> </div> </blockquote>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM