2009-11-01 6 views
0

J'écris un script PHP temporaire pour mettre à jour la base de données MySQL de mon forum vBulletin.PHP Regex & YouTube

Voici ce qu'il fait. Il trouve une entrée qui a un code [youtube] [/ youtube]. Et puis il doit remplacer ce code avec un lien vers la vidéo YouTube à la place.

Donc, voici un exemple de ce que je dois prendre:

$string = <<<END 
Hi everyone! Check out this video that I just found on YouTube! 

[youtube]<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/youtube] 
END; 

Et je dois faire ce ressembler à ceci:

[URL=http://www.youtube.com/watch/?v=Md1E_Rg4MGQ]http://www.youtube.com/watch/?v=Md1E_Rg4MGQ[/URL] 

Je reçois un travail avec des maux de tête le Regex. Je n'ai pas assez d'expérience avec Regex pour savoir quoi faire.

Il doit ressembler à ceci:

$string = preg_replace("#\[youtube\]?????\[/youtube\]#i", "[URL=http://www.youtube.com/watch?v=$1]http://www.youtube.com/watch?v=$1[/URL]", $string); 

Aide S'il vous plaît!^_^

Répondre

0

Quelque chose comme ça peut-être?

$string = preg_replace('#\[youtube\].*?name="movie" value="(.*?)".*?\[/youtube\]#i', "[URL=$1]$1[/URL]", $string); 

Notez que ceci est limité en ce qu'elle attend une chaîne de format name="movie" value="????????????????" précisément - sur le plan technique, il existe d'autres constructions HTML valide avec le même sens, mais un ordre différent, etc. La solution idéale serait d'utiliser une sorte de DOM analyseur pour saisir la valeur de l'attribut de film, mais si vous savez que les gens vont toujours utiliser ce format exact (si c'est copier le copier/coller de youtube est toujours ou similaire) alors regex peut suffire.

+0

Je l'ai eu. Merci :) – stackoverflowUser001