Bonjour,

Voila je rencontre un petit problème, je suis entrain de faire un mini-réseau social et je n'arrive pas à transformer les url youtube en embed pour afficher le player de la vidéo youtube.

Enfete c'est un systeme de publication et lorsque qu'on colle un lien youtube "https://www.youtube.com/watch?v=xx" j'aimerais que sa le transforme en iframe avec le player youtube mais tout en gardant le contenu de la publication

Par exemple quelq'un poste :

Regarder ce fou !! https://www.youtube.com/watch?v=zNS_jX2FlS4

Je veux que saffiche :
Regarder ce fou !!
##player video youtube##

J'ai deja essayer avec preg_match ou bien str_replace etc mais je n'arrive pas aidez moi svp.

8 réponses


zkiller
Réponse acceptée
<?php

    $str = "Regarder ce fou !!\nhttp://www.youtube.com/watch?v=zNS_jX2FlS4\nun vrais fou !";

    $str = preg_replace('#http://www.youtube.com/watch\?v=([a-z0-9A-Z_-]+)+#i', '<iframe width="450" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $str);

    echo $str;
?>

C'est tout simple avec les regex :

<? $str = preg_replace('#http://www.youtube.com/watch\?v=(.+)+#i', '<iframe width="450" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $str);  ?>

Après tu peux adapter pour que ça convertisse aussi les liens vers la version mobile de Youtube s'il le faut. ^^

ça ne fonctionne pas ça m'affiche rien du tout,

                <?php
                $str = $message['PostContent'];
                $str = preg_replace('#http://www.youtube.com/watch\?v=(.+)+#i', '<iframe width="450" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $str);
                ?>

Bonsoir.
Tu as bien modifié PostContent par le véritable nom de l'input de ton formulaire ?
Et puis l'exemple que Aymerik54 t'a donné, ne sert qu'à parser l'url YouTube pour récupérer la valeur de v= et non pour récupérer ce qui a pu être posté avant et/ou après le lien.

Bonsoir,
oui oui et c'est pas ça que je veux, je n'arrive pas a faire marcher comme je le voudrais

Dans ton cas il faut utiliser les expressions régulières (= regex). On te donne la piste, à toi de l'explorer. ;)
Voilà qui devrait t'aider : http://www.grafikart.fr/tutoriels/php/expression-reguliere-86

ça ne fonctionne pas ça m'affiche rien du tout
oui oui et c'est pas ça que je veux, je n'arrive pas a faire marcher comme je le voudrais

Regarde ici ça t'aidera

oui oui et c'est pas ça que je veux, je n'arrive pas a faire marcher comme je le voudrais

Nous n'allons pas te faire le code à ta place, nous t'aidons en t'aiguillant sur des pistes et solutions.
Tu peux aussi regarder un des tutoriels de Grafikart, ça t'aidera bien , par exemple : Les expressions régulières ou encore BBCode.