Php WordPress在短代码中解析短代码

Php WordPress在短代码中解析短代码,php,wordpress,plugins,shortcode,Php,Wordpress,Plugins,Shortcode,我有一个短代码outputURL,用于将值输出到URL中。该值是从短代码valueURL中检索的。valueURL输出是文本包装在div中: <div class="">textForURL</div> 我只需要textForURL值,不包括div标记。到目前为止,我只能输出div标记和文本,而不能输出纯文本的干净版本 下面是我的快捷码函数: function ouputURL(){ $content = '[valueURL id="5"]'; $clean = p

我有一个短代码outputURL,用于将值输出到URL中。该值是从短代码valueURL中检索的。valueURL输出是文本包装在div中:

<div class="">textForURL</div>
我只需要textForURL值,不包括div标记。到目前为止,我只能输出div标记和文本,而不能输出纯文本的干净版本

下面是我的快捷码函数:

function ouputURL(){

$content = '[valueURL id="5"]';
$clean = preg_replace("#<div.*?>.*?</div>#", "", $content);
echo do_shortcode( $clean );
}

add_shortcode('output', 'ouputURL');
我进行了研究,并能够将其整合在一起,但我不确定我是否朝着正确执行的方向前进。任何能帮助我实现目标的人都将不胜感激

编辑:

这是为了进一步澄清我的问题

我使用一个WordPress插件来管理一篇文章中所有嵌入的视频URL

作为一项功能,该插件允许通过其管理页面添加单个视频id,即vid=X23dw34,该页面在查看主视频之前在播放列表中查看

我想使用一个ad rotator插件来管理多个视频id,并根据广告服务参数提供单个视频id,并通过一个短代码调用,即[valueURL id=5]

ad rotator插件将一个DIV环绕在视频id上:

X23dw34

使用我的函数,我已经能够修改插件,该插件管理嵌入的视频URL,以填充视频id,包括由ad rotator短代码检索的div包装。不幸的是,输出结果是: …video.com/embed/X23dw34

我的问题是解析出div并只填充视频id以生成以下内容: …video.com/embed/X23dw34

我不确定是我对短代码和解析的有限理解造成了问题,还是我的最终目标不能由一个简单的函数来处理

如果您需要更多信息,请告诉我

编辑2:

这是整个iframe,为了正确格式化,我删除了额外的选项卡:


我不完全理解,但希望这能让你走上正轨:

add_shortcode('output', 'ouputURL');
function ouputURL ( $atts ) {
    if(!isset($atts['id']))
        return;
    $valueURL = do_shortcode("[valueURL id={$atts['id']}]");
    preg_match("#<div.*?>(.*?)</div>#", $valueURL, $matches);
    if(!isset($matches[1]))
        return;
    return $matches[1]; // the ID
}
因此,如果您将[output id=5]放入帖子/页面的内容中,它将检索[valueURL id=5]的结果,找到div标记的内容并返回以打印在页面上


您可以修改它,使其返回的不仅仅是ID。

我不明白您想要实现什么:您能添加一个示例吗?我添加了更多详细信息。希望我能够澄清我的主要问题。谢谢你,这很有效。非常感谢。我也能够对它进行一些修改,以用于其他用例。我确实遇到了一个路障,一个用例调用,用于解析“src”的YouTube iframe,并且只检索到“?”之前的url。我想出了这个:/src=[^]+/但我觉得我遗漏了什么。提前谢谢。我很高兴它起作用了。你能给我一个你想要解析的iframe标签的例子吗?我刚刚尝试了你的regexp,我似乎工作得很好。这是整个iframe,不确定格式是否有问题: