【问题标题】:How do I remove strong tags & inline styling from headings?如何从标题中删除强标签和内联样式?
【发布时间】:2016-08-31 09:56:30
【问题描述】:

我正在尝试摆脱 wordpress 标题中的内联样式和强标签。例如<h2 style="font-size: 18px"><strong>This is </strong><strong>mess</strong><strong>y</strong></h2>

  1. 我能否使用正则表达式替换来删除标签而不丢失标签之间的文本?

  2. 您建议使用 function.php 过滤标签还是应该导出整个 wp_posts 表并在 sublime 中进行正则表达式替换?

【问题讨论】:

标签: php regex wordpress inline html-heading


【解决方案1】:
$str='before <h2 style="font-size: 18px"><strong>This is </strong><strong>mess</strong><strong>y</strong></h2>after';

$pos = strpos($str, "<h2");
$pos2 = strpos($str, "</h2>");

$partstr = substr($str, $pos, $pos2);
$tag = substr($str, $pos, 3);

$partstr2 = str_replace("<strong>" , "", $partstr);
$partstr2 = str_replace("</strong>" , "", $partstr2);
$partstr2 = str_replace('<h2 style="font-size: 18px">', "", $partstr2);


$newstr = str_replace($partstr, $tag . ">".$partstr2 , $str);

echo  $newstr;

我不推荐 preg_replace。

编辑的代码。
工作示例:http://sandbox.onlinephpfunctions.com/code/13be2bfb61de6e7d3591caf9a343011a771bab63

【讨论】:

  • 内联样式怎么样?顺便说一句,您可以传递一个字符串数组以在 str_replace() 中搜索
  • @billyonecan 我猜你也可以这样做。
  • 这将替换所有&lt;strong&gt; 标签,对吗?我正在尝试仅过滤 h2-h6 标题中的那些。
  • @Jonas 我想我会用 strpos() 来解决它,找到开始 H 标记和结束 H 标记,然后只用 str_replace 替换该部分,然后用新内容重建字符串
  • 谢谢@Andreas,看起来很棒。这适用于具有多个 h2 标题的 wordpress 帖子吗?
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 2012-07-13
  • 1970-01-01
  • 2011-09-02
  • 2020-11-09
  • 2013-12-03
  • 2016-02-22
  • 2020-03-24
相关资源
最近更新 更多