Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Hello I'm trying to convert youtube links into embed code.

this is what I have:

<?php

$text = $post->text;

     $search = '#<a(.*?)(?:href="https?://)?(?:www.)?(?:youtu.be/|youtube.com(?:/embed/|/v/|/watch?.*?v=))([w-]{10,12}).*$#x';
     $replace = '<center><iframe width="560" height="315" src="http://www.youtube.com/embed/$2" frameborder="0" allowfullscreen></iframe></center>';
     $text = preg_replace($search, $replace, $text);


echo $text;
?>

It works for one link. However if I add two, it will only swap the last occurrence. What do I have to change?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
590 views
Welcome To Ask or Share your Answers For Others

1 Answer

You're not handling the end of the string properly. Remove the $, and replace it with the closing tag </a>. this will fix it.

 $search = '#<a(.*?)(?:href="https?://)?(?:www.)?(?:youtu.be/|youtube.com(?:/embed/|/v/|/watch?.*?v=))([w-]{10,12}).*</a>#x';
 $replace = '<center><iframe width="560" height="315" src="http://www.youtube.com/embed/$2" frameborder="0" allowfullscreen></iframe></center>';
 $text = preg_replace($search, $replace, $text);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...