Solved

replace youtube links into embed code

Posted on 2010-08-14
6
588 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
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
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

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Both Easy and Powerful How easy is PHP? http://lmgtfy.com?q=how+easy+is+php (http://lmgtfy.com?q=how+easy+is+php)  Very easy.  It has been described as "a programming language even my grandmother can use." How powerful is PHP?  http://en.wikiped…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

705 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now