正则表达式用iframe替换标记

时间:2013-06-03 13:17:00

标签: php regex wordpress

我正在构建一个简单的功能,以便在Wordpress中嵌入视频。我想阅读帖子内容并将[youku: xxAAAJFSK]替换为iframe:<iframe src="http://player.youku.com/embed/xxAAAJFSK"></iframe>

我猜我应该使用正则表达式进行替换,但似乎无法找到正确的表达式......我试过了:

$pattern = '/youku\.com\/([^\/]*)/i';
if (preg_match($pattern, $content, $matches)){
  $id_video = $matches[1];
  return "<iframe src='http://player.youku.com/embed/" . $id_video . "></iframe>";
}

这只会打破我的网站..

如果您设法让我使用[youku: xxAAAJFSK width:400 height:400]

之类的东西设置宽度和高度,则需要额外积分

3 个答案:

答案 0 :(得分:2)

这实际上非常easy ......

  • \[:匹配[
  • \s*:匹配空格0次或以上
  • youku:匹配优酷
  • \s*:匹配空格0次或以上
  • ::匹配:
  • \s*:匹配空格0次或以上
  • ([^]]*):匹配除] 0次或更多次以外的任何内容并将其分组
  • \]:匹配]
  • 您甚至可以使用i修饰符进行不区分大小写的匹配。

正则表达方式: \[\s*youku\s*:\s*([^]]*)\]
替换: <iframe src="http://player.youku.com/embed/$1"></iframe>
PHP代码: $output = preg_replace('#\[\s*youku\s*:\s*([^]]*)\]#i', '<iframe src="http://player.youku.com/embed/$1"></iframe>', $input);

答案 1 :(得分:2)

您是否已修复该语法?如果没有,你最好看Wordpress Shortcode API并遵循他们的风格。这将为您带来许多艰苦的工作,因为系统将处理参数解析。例如:

// [youku vid="xxAAAJFSK" width="400" height="400"]
function youku_func( $atts ) {    
    return "<iframe src='http://player.youku.com/embed/" . $atts['vid'] . " width='" . $atts['width'] . "' height='" $atts['height'] . "'></iframe>";
}
add_shortcode( 'youku', 'youku_func' );

您可能希望将其展开以包含宽度和高度的默认值,或者如果它们不作为参数提供,则将其删除。

答案 2 :(得分:1)

除非你出于教育目的这样做,don't reinvent the wheel

已经有很多支持youku的Wordpress插件。

编辑:如果你想推出自己的插件,我建议你查看一个现有的工作插件并根据自己的需要定制他们的实现。