我试图在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 );
这有什么明显的错误吗?
由于
答案 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);