【问题标题】:Remove <div> with a class without removing content使用类删除 <div> 而不删除内容
【发布时间】:2019-04-09 01:28:18
【问题描述】:

我将视频包装在自定义 div 中。它看起来像这样:-

<div class="yt">
  <iframe>....Video code....</iframe>
</div>

我想删除 &lt;div class="yt"&gt;&lt;/div&gt; 但保留 iframe。我尝试使用此代码使用preg_replace:-

$content = preg_replace('#<div class="yt">(.*?)</div>#', '', $content);
return $content;

这会删除整个 div。有人可以帮助我吗?

期望的输出

<iframe>....Video code....</iframe>

【问题讨论】:

  • 最有效的方法是手动移动孩子,见stackoverflow.com/questions/20910147/…
  • 那么,我将不得不使用 JS 而不是 PHP?我想知道是否有办法用 PHP 做到这一点。
  • 对不起,我的错误。我已经使用 PHP 添加了答案。

标签: php regex video


【解决方案1】:

您可以使用正则表达式来做到这一点,但您必须进行两项更改:

(.*?) 不匹配换行符。所以将.替换为[\s\S](来源:Any character including newline - Java Regex

为了保留您需要的内容,您需要将其替换为您的捕获组$1

最终代码:

$content = preg_replace('#<div class="yt">([\s\S]*?)</div>#', '$1', $content);

演示:https://regex101.com/r/oHiPt2/1

如果您需要删除周围的空白,您可以改进正则表达式或使用trim()

【讨论】:

  • 完美运行!非常感谢,托马斯 :)
猜你喜欢
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2021-12-10
  • 2010-10-17
  • 1970-01-01
  • 2023-04-02
  • 2012-10-07
  • 1970-01-01
相关资源
最近更新 更多