php preg_replace帮助iframe src

时间:2011-03-24 04:12:18

标签: php regex preg-replace

我创建了一个函数,它将为youtube嵌入代码设置高度,宽度和wmode =透明。现在youtube正在返回iframe代码。所以,我需要在youtube src的末尾添加“?wmode = transparent”。

例如。
原始代码:

  

< iframe title =“YouTube视频播放器”width =“420”height =“349”src =“http://www.youtube.com/embed/aXNUL1-urg8”frameborder =“0”allowfullscreen =“ “>< / iframe中>

我希望将其替换为:

  

< iframe title =“YouTube视频播放器”width =“ mywidth ”height =“ myheight ”src =“http://www.youtube.com/ embed / aXNUL1-urg8 ?wmode = transparent “frameborder =”0“allowfullscreen =”“>< / iframe>

更换高度和宽度是有效的,但替换src不起作用。

我正在使用以下正则表达式

$ patterns [] ='/ src="http:\ / / / www.youtube.com \ /embed\/[a-zA-Z0-9._-]"/';
$ replacementments [] ='src =“http://www.youtube.com/embed/${1}?wmode=transparent”';

以下是我的功能。

  

function SetHeightWidthVideo($ markup,$ w ='200',$ h ='120')   {         //使其成为wmode = transparent

  $markup = str_replace('<embed ','<embed wmode="transparent" ',$markup);
  //$w = '200';
  //$h = '120';

  $patterns = array();
  $replacements = array();
  if( !empty($w) )
  {
      $patterns[] = '/width="([0-9]+)"/';
      $patterns[] = '/width:([0-9]+)/';

      $replacements[] = 'width="'.$w.'"';
      $replacements[] = 'width:'.$w;
  }

  if( !empty($h) )
  {
      $patterns[] = '/height="([0-9]+)"/';
      $patterns[] = '/height:([0-9]+)/';

      $replacements[] = 'height="'.$h.'"';
      $replacements[] = 'height:'.$h;
  }



  $patterns[] = '/src="http:\/\/www\.youtube\.com\/embed\/[a-zA-Z0-9._-]"/';
  $replacements[] = 'src="http://www.youtube.com/embed/${1}?wmode=transparent"';

  return preg_replace($patterns, $replacements, $markup);
     

}

请帮忙。提前致谢。

2 个答案:

答案 0 :(得分:2)

尝试:

$patterns[] = '/src="(.*?)"/';
$replacements[] = 'src="${1}?wmode=transparent"';

return preg_replace($patterns, $replacements, $markup);

答案 1 :(得分:2)

复制,粘贴,运行:

function setHeightWidthSrc($s, $width, $height)
{
  return preg_replace(
    '@^<iframe\s*title="(.*)"\s*width="(.*)"\s*height="(.*)"\s*src="(.*?)"\s*(.*?)</iframe>$@s',
    '<iframe title="\1" width="' . $width . '" height="' . $height . '" src="\4?wmode=transparent" \5</iframe>',
    $s
  );
}

$original = '<iframe title="YouTube video player" 
  width="420" height="349" src="http://www.youtube.com/embed/aXNUL1-urg8" 
  frameborder="0" allowfullscreen=""></iframe>
';
print "$original\n";
print setHeightWidthSrc($original, 100, 100) . "\n";