Swap all youtube urls to embed via preg_replace()
php, preg-replace
Solution
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);
Problem
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?