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 未知修饰符警告,但我不知道正则表达式修复 [重复]
preg_replace 这个:123.. - 可能是一个简单的 PHP / preg_replace / RegEx 问题,但老实说我很难过