如何将Wordpress标题标签转换为html div标签

时间:2016-12-21 16:55:02

标签: php regex wordpress preg-replace caption

我从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>

2 个答案:

答案 0 :(得分: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); 
}

答案 1 :(得分:0)

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

查找: \[caption([^\]])\] 更换: <div$1>

查找: \[/\caption\] 更换: </div>