php preg_replace 帮助 iframe src

Posted

技术标签:

【中文标题】php preg_replace 帮助 iframe src【英文标题】:php preg_replace help iframe src 【发布时间】:2011-07-21 20:13:24 【问题描述】:

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

例如。 原代码:

我希望将其替换为:

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

我正在使用下面的正则表达式

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

下面是我的功能。

函数 SetHeightWidthVideo($markup,$w='200',$h='120') //使其 wmode = 透明

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

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

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

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

      $replacements[] = '';
      $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);

请帮忙。提前致谢。

【问题讨论】:

您需要在 [a-zA-Z0-9._-] 表达式的末尾添加一个 +。现在它只能匹配一个字符。 【参考方案1】:

尝试:

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

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

【讨论】:

【参考方案2】:

复制、粘贴、运行:

function setHeightWidthSrc($s, $width, $height)

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


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

【讨论】:

以上是关于php preg_replace 帮助 iframe src的主要内容,如果未能解决你的问题,请参考以下文章

警告:preg_replace():未知修饰符“h”

我在字符串上有几个 preg_replace 未知修饰符警告,但我不知道正则表达式修复 [重复]

PHP7 preg_replace出错及解决办法

PHP 在 preg_replace 上崩溃

preg_replace 这个:123.. - 可能是一个简单的 PHP / preg_replace / RegEx 问题,但老实说我很难过

接口去除标签并且提取图片视频