簡體   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