Solved

replace youtube links into embed code

Posted on 2010-08-14
6
593 Views
Last Modified: 2012-05-10
there is already a question on this which is not solved.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_26262923.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><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object
 
0
Comment
Question by:iusephp
  • 3
  • 2
6 Comments
 
LVL 14

Expert Comment

by:Kalpan
ID: 33435703
Here is the example for the appropriate one...

http://embedyoutubevideo.com/php-control-embedded-link-youtube.html

you can select as many as links and than customize with your code...

0
 
LVL 14

Expert Comment

by:Kalpan
ID: 33435719
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><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BF1QogPioYI&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object';

// if you are storing the whole link to your data base than replace as value="'.$youtubelink.'" above
}
0
 
LVL 1

Author Comment

by:iusephp
ID: 33435749
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
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 8

Expert Comment

by:ropenner
ID: 33437869
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.
<?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;
}
?>

Open in new window

0
 
LVL 8

Expert Comment

by:ropenner
ID: 33437888
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;
}
?>

Open in new window

0
 
LVL 8

Accepted Solution

by:
ropenner earned 250 total points
ID: 33437899
image of the output of the above code
output.jpg
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Developers of all skill levels should learn to use current best practices when developing websites. However many developers, new and old, fall into the trap of using deprecated features because this is what so many tutorials and books tell them to u…
Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question