Expressions régulières en php

Résolu/Fermé
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 - 11 août 2009 à 14:46
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 - 12 août 2009 à 13:11
Bonjour,

J'ai crée un site web ou l'administrateur pourra a loisir diffuser des vidéos youtube, en copiant le code prévu a cette effet ( Intégrer une vidéo sur un site).

Donc je chope le code de la vidéo via un champ input, et je balance le tout sur ma base de donnée.

Sur le site, j'ai prévu un div de 250px/200px pour intégrer cette vidéo, avant d'enregistrer le code de la vidéo en base de donnée, j'aimerais bien la redimensionner automatiquement, avec la fonction php str replace

Voici mon code :

$video= <object width="425" height="344"><param name=\"movie\" ... >
$video_formatee= str_replace("width="425" height="344", "width=\"250\" height=\"200\"", "$video");
------> Cela ça fonctionne.

Ce qu'il me faudrait, c'est une expression régulière (un nombre de 3 chiffres), a mettre en lieu et place des valeurs "brutes" 425 et 344.

Quelqu'un a t'il une solution ?
A voir également:

8 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
11 août 2009 à 15:17
$video_formatee = preg_replace('#width="(.+)" height="(.+)"#i', 'width="250" height="200"', $video);
0
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 22
11 août 2009 à 15:50
Merci de te ton attention avion.

Il y a du mieux, mais encore un petit problème:

Voici mon code :
$video="<object width=\"425\" height=\"344\">...</object>";
echo"video : $video";

$video_formatee = preg_replace('#width="(.+)" height="(.+)"#i', 'width="250" height="200"', $video);
echo"video formatee : $video_formatee";

Ce qui m'affiche
video : <object width="425" height="344">....</object>
video formatee : <object width="250" height="200"></embed></object>


En gros ta fonction remplace bien la largeur et la hauteur de la vidéo, mais elle zappe tous le code qui suit ...
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
12 août 2009 à 00:39
$video_formatee = preg_replace('#<object width="(.+)" height="(.+)">(.+)</object>#i','<object width="250" height="200">$3</object>',$video);
0
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 22
12 août 2009 à 00:54
Remerci avion, mais j'ai toujours le meme probleme

Avec ton code, g exactement le meme problème, voila ce que ça m'affiche :
video : <object width="425" height="344">.... code de la video ...</object>
video formatee : <object width="250" height="200"></embed></object>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
12 août 2009 à 01:02
OMG ! J'ai oublié deux options dans la regex (deux options importantes avec des balises).
Voilà, ça fonctionne (testé et approuvé par avion-f16 ;) ) :
$video_formatee = preg_replace('#<object width="(.+)" height="(.+)">(.+)</object>#isU','<object width="250" height="200">$3</object>',$video);
0
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 22
12 août 2009 à 01:10
On y est presque avion :-)

Le souci, c'est que quand tu regarde le code qu'il faut copier pour intégrer une vidéo youtube, il y a 2 endroits ou la taille est spécifiée :

<object width="425" height="344"> ... blablabla ... width="425" height="344"></embed></object>

Ta fonction change bien les valeurs de width et height du début du code mais celle de la fin ..........

Tu touches au but.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
12 août 2009 à 01:37
$video_formatee = preg_replace('#^<object width="(.+)" height="(.+)">(.+) width="(.+)" height="(.+)"></embed></object>$#isU','<object width="250" height="200">$3 width="250" height="200"></embed></object>',$video);
0
Kemich Messages postés 207 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 11 mars 2011 22
12 août 2009 à 13:11
Thanks Rogers. Tout est OK. Merci pour ton aide.
Je comprend pas grand chose a ton code, mais bon il fonctionne c'est le principal.
Je vais tenter de décortiquer tout ça.
Super !
0