创建特定子串的数组

时间:2015-04-10 08:59:26

标签: php arrays iframe

我们使用自定义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的回答。

1 个答案:

答案 0 :(得分:1)

一种方法:

  1. explode <iframe>上的内容字符串。
  2. 循环生成的数组并使用strpos查找单词 youtube (以排除页面上的其他iframe)。
  3. 如果您找到,请在结果
  4. 中添加<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>';
        }
    }