我们使用自定义CMS,使用PHP MySQL构建
我有一位客户将YouTube视频嵌入网站内容中。这是一个字符串,他可以用CKeditor编辑。一切正常。 他现在希望将这些视频显示在同一页面的不同位置。
出于多种原因,我不想仅为此在系统中创建单独的输入字段。
我需要的解决方案是: 我想提取(多个)< iframe> youtube blah blah< / iframe>从内容字符串中创建iframe字符串数组。然后我可以在页面的其他地方显示它们。
如果不在原始内容位置显示视频,我可以使用preg_replace从内容字符串中删除iframe。
但我不知道如何获取这些子串并在PHP中形成新数组。
希望你有一个想法,我的解释很清楚。
在得到Michel的答案后编辑
我现在使用的完整代码:
$string = '<iframe>youtube iframe</iframe>Some cool text in between blahblah<iframe>moreyoutube</iframe>';
//catch the iframes
$iframe=array();
$parts=explode('<iframe',$string);
if (count($parts) > 1){ //make sure a string without iframes does not end up in the array
foreach($parts as $p){
if( strpos($p,'youtube') !== false ){
$v=explode('</iframe>',$p);
$iframe[]= '<iframe'.$v[0].'</iframe>';
}
}
}
//strip out iframes
$string = preg_replace('/<iframe(.*?)<\/iframe>/', '', $string);
这将为您提供一个没有iframe的字符串,以及一个单独显示的iframe数组。
感谢Michel的回答。
答案 0 :(得分:1)
一种方法:
explode
<iframe>
上的内容字符串。strpos
查找单词 youtube (以排除页面上的其他iframe)。<iframe>
和</iframe>
醇>
$string='<div>blabla</div><iframe src="youtube.org.com.uk.sk"></iframe><div>blahblah</div>';
$iframe=array();
$parts=explode('<iframe',$string);
foreach($parts as $p){
if( strpos($p,'youtube') !== false ){
$v=explode('</iframe>',$p);
$iframe[]= '<iframe'.$v[0].'</iframe>';
}
}