1

我正在构建一个简单的函数来在 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]

4

3 回答 3

2

这实际上很容易做到......

  • \[: 匹配[
  • \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);

于 2013-06-03T13:28:50.507 回答
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' );

您可能希望扩展它以包含宽度和高度的默认值,或者如果它们没有作为参数给出,则将它们删除。

于 2013-06-03T13:30:49.050 回答
1

除非您出于教育目的这样做,否则不要重新发明轮子

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

编辑:如果你想推出自己的,我建议查看现有的工作插件之一并定制它们的实现以满足你的需要。

于 2013-06-03T13:26:39.720 回答