【发布时间】:2018-06-29 03:31:44
【问题描述】:
我刚刚注意到我处理用户故事发布的部分代码没有按应有的方式运行。
每当用户在他的帖子中包含 iframe(例如 YouTube 嵌入视频)时,我的 PHP 脚本都会将 iframe 包装在一个像 <div class="embed-responsive embed-responsive-16by9"> 这样的 div 中。
我使用的代码很简单:
$content = str_replace(['<iframe', '</iframe>'], ['<div class="embed-responsive embed-responsive-16by9"><iframe', '</iframe></div>'], $content);
问题是,当对这篇文章进行更改时,相同的 PHP 代码正在使用 ajax 在后台执行,并且 iframe 再次包装在这个 div 中,这给出了类似这样的内容
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive embed-responsive-16by9">
<iframe ...></iframe>
</div>
</div>
我一直在考虑这个问题,解决方案可能很简单,但是如果 iframe 已经用embed-responsive 类包装在我的 div 中,我该如何检查 PHP?
【问题讨论】:
-
检查内容是否以
<div>开头。如果没有,请添加包装器。 -
但是$content是整个post内容,所以iframe前后都有标签和文字。如何测试该字符串中 iframe 前面是否有 div?
-
检查正则表达式,如下所示:/
标签: php html iframe str-replace