wordpress页面模板 - 使用正则表达式功能不起作用?

时间:2012-12-01 01:14:48

标签: php regex wordpress templates

我已将此功能添加到functions.php(在我的wordpress主题中):

function parse_yturl($url) {
    $pattern = '#^(?:https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch\?v=|/watch\?.+&v=))([\w-]{11})(?:.+)?$#x';
    preg_match($pattern, $url, $matches);
    return (isset($matches[1])) ? $matches[1] : false;
}

如果我在一个单独的文件中运行相同的功能,它工作正常并给我我试过的任何youtube链接的ID,但是,当我尝试在页面模板中使用它时(见下文),我不喜欢什么都没有。

哦是的,我也尝试过回应$视频编码,这很好用。另外 - 如果我在上面提到的单独文件中使用相同的youtubelink,函数/正则表达式就可以正常工作。

以下是模板中的代码:

<?php query_posts( array( 
                'post_type' => 'page',
                'meta_key' => 'ecpt_forsidevideo',
                'meta_value' => '',
                'meta_compare' => '!=' ) ); 

 if ( have_posts() ) while ( have_posts() ) : the_post(); 
    $videocode = get_post_meta($post->ID, 'ecpt_videocode', true);
    $videoid = parse_yturl($videocode);
    ?>
            <div class="forsidevideo">
                <div class="videothumbnail"><?php echo parse_yturl($videocode); ?>
                    <a href="http://www.youtube.com/watch?v=<?php echo $videoid;?>" rel="prettyPhoto" title="<?php the_title(); ?>"><img src="http://img.youtube.com/vi/<?php echo $videoid;?>/0.jpg" alt="YouTube" width="200" height="150" /></a>
                    <a class="playbutton" href="http://www.youtube.com/watch?v=<?php echo $videoid;?>" rel="prettyPhoto" title="<?php the_title(); ?>"><img src="<?php bloginfo('stylesheet_directory');?>/images/playbutton.png" alt="Vis video" width="40" height="40" /></a>
                </div>
                <a href="<?php the_permalink();?>"><h3 class="entry-title"><?php the_title(); ?></h3></a>

                    <?php the_excerpt(); ?>
            </div>
<?php endwhile; // end of the loop. ?>

谁能告诉我我做错了什么?

0 个答案:

没有答案