在Wordpress中显示图像后添加图像URL

时间:2012-03-03 17:56:56

标签: php regex wordpress wordpress-plugin

我试图在Wordpress上的主要内容中的每个图像后显示图像的URL。要做到这一点,我正在构建一个插件。

如果在我的插件中添加以下代码,我可以显示2个相同的图像。因为显示图像的代码存储在$ 1以下。

$content = preg_replace("/(<img([^>]*)>)/i",
    "<div class=\"image_wrap\">$1<div class=\"linkbox\">" .
    "$1</div></div>", $content );

理论上,我需要做的就是破解上面代码中的$ 1的第二个实例来剥离图像src。下面是我尝试过的代码,它使用了一些substr和strpos函数,但这似乎不适合我。

$content = preg_replace("/(<img([^>]*)>)/i",
    "<div class=\"image_wrap\">$1<div class=\"linkbox\">" . 
     substr(substr("$1", strpos("$1","src=\"")+5), 0,strpos(substr("$1",strpos("$1","src=\"")+5),"\"")) .
</div></div>", $content );

这有什么明显的错误吗?

由于

2 个答案:

答案 0 :(得分:0)

手册中有preg_replace_callback的示例。它通常是这样的:

$content = preg_replace_callback(
      "/(<img([^>]*)>)/i",
      "cb_image_wrap",
      $content
);

function cb_image_wrap($match) {

    list($all, $img, $attr) = $match;

    return
       "<div class=\"image_wrap\">$img<div class=\"linkbox\">" . 
       substr(substr("$img", strpos("$img","src=\"")+5), 0,
       strpos(substr("$img",strpos("$img","src=\"")+5),"\"")) .
       "</div></div>";
}

您的字符串修补代码似乎不必复杂。

查看HEREDOC字符串可能也是合适的。

答案 1 :(得分:0)

以下是我最终在上述评论中感谢Mario的解决方案

$content = preg_replace_callback(
        '/(<img([^>]*)>)/i',
        create_function(
            '$matches',
            'return CREDIT_HEAD . 
             "<div class=\"image_wrap\">$matches[0]<div class=\"linkbox\">" . 
                        substr(substr("$matches[0]", strpos("$matches[0]","src=\"")+5), 0,strpos(substr("$matches[0]", strpos("$matches[0]","src=\"")+5),"\"")) .
                    "</div></div>" . 
                    CREDIT_FOOT;'
        ),
        $content);