【问题标题】:How to convert Wordpress caption tag to html div tag如何将 Wordpress 标题标签转换为 html div 标签
【发布时间】:2017-05-07 04:25:31
【问题描述】:

我从 Wordpress 转换了一个网站,我的一些帖子有如下标题标签:

[caption id="attachment_666" align="alignleft" width="316"]
    <img class="wp-image-92692" src="img" width="316"  alt="fitbit-yoga-lady.png" height="210">   
    text
[/caption]

我想捕捉所有这些字幕并将其转换为以下内容

<div id="attachment_666" style="width: 326px" class="wp-caption alignleft">
  <img class="wp-image-92692" src="img" alt="fitbit-yoga-lady.png" width="316" height="210">
  <p class="caption">text</p>
</div>

【问题讨论】:

  • 大概你可以接受没有设置alt 属性,或者你有其他方式将它插入到输出中,因为该值不会出现在输入中的任何地方?
  • @StevenDoggart 谢谢,我更正了我的代码,图像标签不会改变,只是标题将转换为 div,文本将转换为带有类的段落内的文本名字。
  • 我如何在 javascript 中做同样的事情

标签: php regex wordpress preg-replace caption


【解决方案1】:

我在手机上盲目地这样做,但我认为您可以使用以下两个正则表达式,一个用于开始标记,另一个用于结束:

查找: \[caption([^\]])\] 代替: &lt;div$1&gt;

查找: \[/\caption\] 代替: &lt;/div&gt;

【讨论】:

    【解决方案2】:

    好吧,鉴于您提供的确切文本,以下应该可以工作。

    搜索模式:

    \[caption([^\]]+)align="([^"]+)"\s+width="(\d+)"\](\s*\<img[^>]+>)\s*(.*?)\s*\[\/caption\]
    

    替换:

    <div\1style="width: \3px" class="wp-caption \2">\4
        <p class="caption">\5</p>
    </div>
    

    请参阅demo

    根据对输入变化的容忍程度,您可能需要从那里进行调整,但这至少应该让您开始。

    这是一个如何使用preg_replace 完成此操作的示例:

    function convert_caption($content) 
    { 
        return preg_replace(
            '/\[caption([^\]]+)align="([^"]+)"\s+width="(\d+)"\](\s*\<img[^>]+>)\s*(.*?)\s*\[\/caption\]/i', 
            '<div\1style="width: \3px" class="wp-caption \2">\4<p class="caption">\5</p></div>', 
            $content); 
    }
    

    【讨论】:

    • 非常感谢,这对我有用:如何转换为全局? function convert_caption($content) { $content = preg_replace('/[caption([^]]+)align="([^"]+)"\s+width="(\d+)"](\s* \]+>)\s*(.*?)\s*[\/caption]/', '
      \4

      \5

      ', $content) . ''; return $content; }
    猜你喜欢
    • 2012-10-04
    • 2023-04-04
    • 2012-03-08
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多