Expressions régulières en php

Résolu
Kemich Messages postés 207 Date d'inscription   Statut Membre Dernière intervention   -  
Kemich Messages postés 207 Date d'inscription   Statut Membre Dernière intervention   -
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
$video_formatee = preg_replace('#width="(.+)" height="(.+)"#i', 'width="250" height="200"', $video);
0
Kemich Messages postés 207 Date d'inscription   Statut Membre Dernière intervention   22
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
$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   Statut Membre Dernière intervention   22
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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   Statut Membre Dernière intervention   22
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
$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   Statut Membre Dernière intervention   22
 
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