从第二个WP_EDITOR拉取YouTube链接

时间:2014-04-11 作者:Howdy_McGee

我有2个WP\\U编辑器,1个是我用于内容的主编辑器,第2个是我用于用户插入视频和描述视频的任何额外内容的编辑器。我的问题是,有没有一种简单的方法可以在oEmbed抓取之前(期间或之后)拉取视频URL?我试着用preg_match 但我觉得youtube URL的变体太多,无法有效地找到。

以下是我尝试过的:

$videoContent = get_post_meta($post->ID, \'videoContent\', true);
$search = \'#(?:www\\.)?(?:youtu\\.be/|youtube\\.com(?:/embed/|/v/|/watch?.*?v=))([\\w\\-]{10,12})#x\';
$url = preg_match($search, $videoContent);
print_r($url);
我试着四处搜索,但似乎无法输入正确的关键字来提取任何有用的内容,只有“如何嵌入”之类的内容。

2 个回复
SO网友:Douglas.Sesar

也许您应该添加一个自定义字段来接受url本身,而不是wp\\U编辑器文本区域;然后在处理输入后附加嵌入的视频。

如果你需要任何帮助,请告诉我。

或:

您可以添加一个单独的textarea,只接受逗号分隔或换行分隔的URL(因为您在下面声明可能需要多个视频嵌入)

以下是一些保存时使用的代码,这些代码将清理textarea输入:

if ( isset( $_REQUEST[\'your_url_list\'] ) ):


    $input = $_REQUEST[\'your_url_list\'];

    $data = preg_split("/[\\r\\n,]+/", $input, -1, PREG_SPLIT_NO_EMPTY);
    $option_list = array();
    foreach( $data as $d )
        $option_list[] =  trim( $d );

    update_post_meta( $post_id, \'your_url_list\', maybe_serialize( $option_list ) );

endif;

SO网友:Dharmang

由于您的问题是从HTML内容中查找YouTube URL,以下链接可能会帮助您:https://stackoverflow.com/a/5831191/147618

这里需要从同一链接复制regex。

// Linkify youtube URLs which are not already links.
function linkifyYouTubeURLs($text) {
    $text = preg_replace(\'~
        # Match non-linked youtube URL in the wild. (Rev:20130823)
        https?://         # Required scheme. Either http or https.
        (?:[0-9A-Z-]+\\.)? # Optional subdomain.
        (?:               # Group host alternatives.
          youtu\\.be/      # Either youtu.be,
        | youtube         # or youtube.com or
          (?:-nocookie)?  # youtube-nocookie.com
          \\.com           # followed by
          \\S*             # Allow anything up to VIDEO_ID,
          [^\\w\\s-]       # but char before ID is non-ID char.
        )                 # End host alternatives.
        ([\\w-]{11})      # $1: VIDEO_ID is exactly 11 chars.
        (?=[^\\w-]|$)     # Assert next char is non-ID or EOS.
        (?!               # Assert URL is not pre-linked.
          [?=&+%\\w.-]*    # Allow URL (query) remainder.
          (?:             # Group pre-linked alternatives.
            [\\\'"][^<>]*>  # Either inside a start tag,
          | </a>          # or inside <a> element text contents.
          )               # End recognized pre-linked alts.
        )                 # End negative lookahead assertion.
        [?=&+%\\w.-]*        # Consume any URL (query) remainder.
        ~ix\', 
        \'<a href="http://www.youtube.com/watch?v=$1">YouTube link: $1</a>\',
        $text);
    return $text;
}

结束

相关推荐

如何将oEmbed嵌入的视频包装在_content内的DIV标签中?

我正在为一个带有视频教程的网站制作Wordpress主题。我想将嵌入内容的视频(与oEmbed) 在一个分开的分区中。An example完整内容(输出自the_content()) 是这样的:<p><iframe src=\"http://player.vimeo.com/video/0000000\" width=\"900\" height=\"506\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allo