PHP:在div中只包装一次iframe
我只是注意到,我的代码中处理用户故事发布的一部分没有按应有的方式运行 每当用户的帖子中有一个iframe(例如YouTube嵌入视频),我的PHP脚本就会像下面这样将iframe包装在一个div中 我使用的代码很简单:PHP:在div中只包装一次iframe,php,html,iframe,str-replace,Php,Html,Iframe,Str Replace,我只是注意到,我的代码中处理用户故事发布的一部分没有按应有的方式运行 每当用户的帖子中有一个iframe(例如YouTube嵌入视频),我的PHP脚本就会像下面这样将iframe包装在一个div中 我使用的代码很简单: $content = str_replace(['<iframe', '</iframe>'], ['<div class="embed-responsive embed-responsive-16by9"><iframe', '</if
$content = str_replace(['<iframe', '</iframe>'], ['<div class="embed-responsive embed-responsive-16by9"><iframe', '</iframe></div>'], $content);
$content=str_replace(['如果您使用以下方法规范化$content
中的现有iframe,则无需检测帧是否已被包装:
$content = str_replace(['<div class="embed-responsive embed-responsive-16by9"><iframe', '</iframe></div>'], ['<iframe', '</iframe>'], $content);
div
部分已再次添加到帧中,最终所有iframe只包装一次。您可能需要检查iframe是否已经有父级。这可以通过在第一次替换时添加一个类来完成,然后在替换中使用该类作为条件
if(strpos($content,'class="i-wrapped" ')!== false ){
//the iframe has not been wrapped
$content = str_replace(
['<iframe', '</iframe>'],
['<div class="embed-responsive embed-responsive-16by9">'.
'<iframe class="i-wrapped"', '</iframe></div>'],
$content);
}else { /*already wrapped*/}
if(strpos($content,'class=“i-wrapped”')!==false){
//iframe尚未包装
$content=str\u replace(
['检查内容是否以
开头。如果不是,请添加包装器。但是$content是整个文章内容,因此在iframe前后都有标记和文本。如何测试该字符串中iframe前面是否有div?请对照如下正则表达式进行检查:/
$content = str_replace(['<iframe', '</iframe>'], ['<div class="embed-responsive embed-responsive-16by9"><iframe', '</iframe></div>'], $content);
if(strpos($content,'class="i-wrapped" ')!== false ){
//the iframe has not been wrapped
$content = str_replace(
['<iframe', '</iframe>'],
['<div class="embed-responsive embed-responsive-16by9">'.
'<iframe class="i-wrapped"', '</iframe></div>'],
$content);
}else { /*already wrapped*/}