iusephp
asked on
replace youtube links into embed code
there is already a question on this which is not solved.
https://www.experts-exchange.com/questions/26262923/Replace-youtube-url-with-embed-code.html
$inputText = ' lorem ipsum test test http://www.youtube.com/watch?v=ckRsIy4Zqgo then another youtube link http://www.youtube.com/watch?v=sqiQBGkhE9w&feature=related sometext further';
I want to replace only youtube links with youtube embed player.
Output would be smth like this:
lorem ipsum test test EMBED CODE then another youtube link EMBED CODE sometext further
sample EMBED CODE is
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><para m name="allowscriptaccess" value="always"></param><em bed src="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&" type="application/x-shockw ave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></obj ect
https://www.experts-exchange.com/questions/26262923/Replace-youtube-url-with-embed-code.html
$inputText = ' lorem ipsum test test http://www.youtube.com/watch?v=ckRsIy4Zqgo then another youtube link http://www.youtube.com/watch?v=sqiQBGkhE9w&feature=related sometext further';
I want to replace only youtube links with youtube embed player.
Output would be smth like this:
lorem ipsum test test EMBED CODE then another youtube link EMBED CODE sometext further
sample EMBED CODE is
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><para
you can use the loop if you are getting the links from database
foreach($links as $link){
$youtublink = $link['url'];
echo "lorem ipsum test test<br>";
echo '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$youtubelink.'"></param><param name="allowFullScreen" value="true"></param><para m name="allowscriptaccess" value="always"></param><em bed src="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&" type="application/x-shockw ave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></obj ect';
// if you are storing the whole link to your data base than replace as value="'.$youtubelink.'" above
}
foreach($links as $link){
$youtublink = $link['url'];
echo "lorem ipsum test test<br>";
echo '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$youtubelink.'"></param><param name="allowFullScreen" value="true"></param><para
// if you are storing the whole link to your data base than replace as value="'.$youtubelink.'" above
}
ASKER
I am afraid above replies wont really help.
I am allowing users to enter message in a textarea. User can add youtube links (not embed code).
The youtube links in the message needs to be convereted to youtube embed codes in serverside php/
Its all about a string which is having some text and youtube links mixed.
Youtube links needs to be replaced to EMBED CODE. So when the message is rendered back it will be message + youtube videos
I am allowing users to enter message in a textarea. User can add youtube links (not embed code).
The youtube links in the message needs to be convereted to youtube embed codes in serverside php/
Its all about a string which is having some text and youtube links mixed.
Youtube links needs to be replaced to EMBED CODE. So when the message is rendered back it will be message + youtube videos
This snippet works as it stands. I'm sure there is a more efficient way to do it using php built-in functions but this is readable and easy to understand.
good luck.
good luck.
<?PHP
# #1 Your cut and paste EMBED code with the "YOU_TUBE_IDENTIFIER" as just some text we will replace later
$EMBED_CODE =<<< endofembedcode
<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/YOU_TUBE_IDENTIFIER&hl=en_US&fs=1&"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/YOU_TUBE_IDENTIFIER&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
</embed>
</object>
endofembedcode;
# #2 the text input by the user
$inputText = ' lorem ipsum test test http://www.youtube.com/watch?v=ckRsIy4Zqgo then another youtube link http://www.youtube.com/watch?v=sqiQBGkhE9w&feature=related sometext further';
# Now to combine #1 and #2 to match your example of
# lorem ipsum test test EMBED CODE then another youtube link EMBED CODE sometext further
$output = "";
# split your input into words and look for "http://www.youtube.com/watch?v=" which looks to be the common portion of the youtube URL
foreach (explode(" ",$inputText) as $word) {
# see if youtube.com is in there
if (strlen($word) == 0) continue;# print "[$word]<BR>";
if (preg_match("'http://www.youtube.com/watch'",$word)) { # if we find this url at the beginning of the word in position 0
list($you_tube_url, $parameters) = explode('?',$word); # split the url by the equal sign to get the video reference identifier
# put the parameters into name=>value pairs
$mypairs = nameValue($parameters);
# use the 'v' parameter
$temp = preg_replace("/YOU_TUBE_IDENTIFIER/","{$mypairs{'v'}}",$EMBED_CODE); # insert the video identifier into the embed code above
$output .= "$temp ";
} else {
$output .= "$word ";
}
}
print "$output";
function nameValue($parameters="") {
foreach (explode('&',$parameters) as $pairs) {
list($name,$value) = explode('=',$pairs);
$newpairings{$name} = $value;
}
return $newpairings;
}
?>
comments in the code didn't match the code so I'm reposting the code so it is more understandable.
<?PHP
# #1 Your cut and paste EMBED code with the "YOU_TUBE_IDENTIFIER" as just some text we will replace later
$EMBED_CODE =<<< endofembedcode
<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/YOU_TUBE_IDENTIFIER&hl=en_US&fs=1&"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/YOU_TUBE_IDENTIFIER&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
</embed>
</object>
endofembedcode;
# #2 the text input by the user
$inputText = ' lorem ipsum test test http://www.youtube.com/watch?v=ckRsIy4Zqgo then another youtube link http://www.youtube.com/watch?v=sqiQBGkhE9w&feature=related sometext further';
# Now to combine #1 and #2 to match your example of
# lorem ipsum test test EMBED CODE then another youtube link EMBED CODE sometext further
$output = "";
# split your input into words and look for "http://www.youtube.com/watch?v=" which looks to be the common portion of the youtube URL
foreach (explode(" ",$inputText) as $word) {
# see if youtube.com is in there
if (strlen($word) == 0) continue;# print "[$word]<BR>";
if (preg_match("'http://www.youtube.com/watch'",$word)) { # if we find this url in the $word
list($you_tube_url, $parameters) = explode('?',$word); # split the url by the question mark '?' to get the url parameters
# put the parameters into name=>value pairs
$mypairs = nameValue($parameters);
# use the 'v' parameter
$temp = preg_replace("/YOU_TUBE_IDENTIFIER/","{$mypairs{'v'}}",$EMBED_CODE); # insert the video identifier into the embed code where ever YOU_TUBE_IDENTIFIER is found
$output .= "$temp ";
} else {
$output .= "$word ";
}
}
print "$output";
# splits up URL parameters into name value pairs
function nameValue($parameters="") {
foreach (explode('&',$parameters) as $pairs) {
list($name,$value) = explode('=',$pairs);
$newpairings{$name} = $value;
}
return $newpairings;
}
?>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
http://embedyoutubevideo.com/php-control-embedded-link-youtube.html
you can select as many as links and than customize with your code...