Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: Nheavy le le 21-01-2012 a 19:32:03

Titre: echo intelligent ?
Posté par: Nheavy le le 21-01-2012 a 19:32:03

Bonjour,

Est-il possible de faire en sorte que sur un code de ce type :


Code:

   <?php
   $image_id = 'identifiant';
   $image_title = 'titre';
   $image_url     = 'http://www.monimage.com';
   include ($_SERVER["DOCUMENT_ROOT"].'/frags/image.php');
   ?>


On puisse faire en sorte que si on tape :


Code:
$image_url     = '<img src="http://www.monimage.com" alt="" />';


Le echo image_url ne considère que le lien et ignore la balise img ?

Titre: Re:echo intelligent ?
Posté par: Wolf18 le le 21-01-2012 a 20:40:55

Sers toi de la fonction ereg_replace() ;)

Titre: Re:echo intelligent ?
Posté par: Nheavy le le 22-01-2012 a 04:08:57

Merci, mais malheureusement je ne trouve pas comment faire sur les forums d'aide,

Pour ma part, j'ai un fichier php 1 avec le code général :


Code:
<img src="<?php echo $image_url; ?>" alt="" />


et lorsque j'ai besoin de mettre une image, j'inclus ce fichier en renseignant l'echo avec l'url de l'image dans le fichier 2 :


Code:
<?php
$image_url = 'http://www.monimage.com';
include ($_SERVER["DOCUMENT_ROOT"].'/frags/fichier1.php');
?>


Il faudrait donc que je puisse coller n'importe quelle ligne de code contenant l'url (selon les propositions de l’hébergeur du type <img src="http://www.monimage.com" alt="" />) mais que lors de l'inclusion, le php ne garde que l'url pour l'intégrer dans mon fichier php.

Or sur les exemples que j'ai trouvé, il semblerait que la fonction replace est à mettre sur le fichier2 pour moi. Et là c'est pas bon, puisque j'ai autant de quitte à supprimer ce qui entoure l'url qu'à écrire à chaque fois le php.

Titre: Re:echo intelligent ?
Posté par: Afency.fr le le 21-03-2012 a 18:43:17

un include est assez chatouilleux par définition en plus les admin des serveur bloque certaines fonctions ...
Bref je ne suis pas sur de ce que tu veux faire ?

Si tu veux faire un include avec une url complete c'est en général impossible pour des raison de sécurité

Si tu veux faire un appel du nom de domaine essaye ça :
$racine = 'http://'.$_SERVER['HTTP_HOST'].'/';
$racinesimple = $_SERVER['HTTP_HOST'];

sinon si tu veux avoir un fichier avec des variables et l'appeler essaye ça :
require_once("mapage.php");

Voilà ! ;o)


Titre: Re:echo intelligent ?
Posté par: Nheavy le le 21-03-2012 a 20:39:31

Je crois que j'ai mal expliqué mon soucis,
le but est que quelque soit le code que je vais mettre pour renseigner le echo, comme par exemple l'un des trois suivants:


Code:
<img src="http://domaine1/image.jpg" alt="image"/>

Code:
<img src="http://domaine2/image.png" title="titre" alt="image"/>

Code:
<a href="lien"><img src="http://domaine3/image.gif" title="titre" alt="image"/>mon image</a>


le echo ferait le tri pour ne garder que http://domaine1/image.jpg ou http://domaine2/image.png ou http://domaine3/image.gif selon le code que j'aurais renseigner.

Tu vois ce que je veux dire ?

Titre: Re:echo intelligent ?
Posté par: Vendo le le 22-03-2012 a 11:44:14

Pour pouvoir sortir l'url de l'image, il faut utiliser le pattern suivant


Code:
$urlPattern = '@"(http://.*[jpg|png|gif])"@i'


Ensuite on utilise la fonction preg_Match


Code:

$tagHTML = '<img src="http://domaine1/image.jpg" alt="image"/>';
// J'ai testé les 3 cas
// $tagHTML = '<img src="http://domaine2/image.png" title="titre" alt="image"/>';
// $tagHTML = '<a href="lien"><img src="http://domaine3/image.gif" title="titre" alt="image"/>mon image</a>';


preg_match($urlPattern, $tagHTML , $matches);


$matches'[0'] contient l'url de l'image, mais attention il est entouré de guillemet donc pour l'utiliser faire comme ce qui suit:


Code:

$image = '<img src='.$matches[0].' alt="">';

Titre: Re:echo intelligent ?
Posté par: Nheavy le le 22-03-2012 a 19:22:08

Bonjour,

Super, merci ça fonctionne nickel !

Est-ce également possible de récupérer l'URL si on ne sait pas comment elle va se terminer ?
J'aurais bien voulu appliquer ce principe sur des object aussi mais ceux-ci se terminent par des séries de chiffres aléatoires comme ceci par exemple :


Code:
http://domaine.fr/100cf0f993f8ca676f9d47dd4e3


Encore merci à toi !

Titre: Re:echo intelligent ?
Posté par: Vendo le le 23-03-2012 a 14:34:51

Tu pourrais montrer le tag HTML qu'il faut parser, comme tu l'as fait pour les images.

Ne mettre que le résultat, sans fournir la source, ce n'est pas évident.

Titre: Re:echo intelligent ?
Posté par: Nheavy le le 23-03-2012 a 17:17:29

Ok, voici des exemples de codes qui me tombent sous la main :

une vidéo de Rutube

Code:
<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" ></EMBED></OBJECT>

URL à récupérer : http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83


une vidéo de Dailymotion

Code:
<iframe frameborder="0" width="480" height="270" src="http://www.dailymotion.com/embed/video/xpmt3n"></iframe><br /><a href="http://www.dailymotion.com/video/xpmt3n_exclu-video-driss-n-aime-pas-les-pinces_shortfilms" target="_blank">EXCLU VIDEO - Driss n'aime pas les pinces</a> <i>par <a href="http://www.dailymotion.com/Europe1fr" target="_blank">Europe1fr</a></i>

URL à récupérer : http://www.dailymotion.com/embed/video/xpmt3n


une vidéo de Wat

Code:
<iframe src="http://www.wat.tv/embedframe/529435chuPP3r8331179" frameborder="0" style="width: 480px; height: 270px;"></iframe><div class="watlinks" style="width:480px;font-size:11px; background:#CCCCCC; padding:2px 0 4px 0; text-align: center;"><a target="_blank" class="waturl" href="http://www.wat.tv/video/premieres-images-inedites-4ykdn_4cw81_.html" title="Vidéo Les premi&egrave;res images in&eacute;dites de la Battle entre Atef et Sofia sur wat.tv"><strong>Les premières images inédites de la Battle entre Atef et Sofia</strong></a> Vidéo <a class="waturl altuser" href="http://www.wat.tv/the-voice" title="Retrouvez toutes les vidéos the-voice sur wat.tv">the-voice</a> sélectionnée dans <a href="http://www.wat.tv/guide/tv" class="waturl alttheme" title="Toutes les vidéos Replay TV sont sur wat.tv">Replay TV</a> </div>

URL à récupérer : http://www.wat.tv/embedframe/529435chuPP3r8331179


Donc ces codes là ne changent pas, seule l'URL change, le but serait que le code Rutube récupère l'URL Rutube, pareil pour celui de Dailymotion et Wat mais comme tu peux voir, les adresses se terminent par des séries de chiffres variables donc il n'y a pas de repère bien définis comme pour les images.
C'est possible ?

Titre: Re:echo intelligent ?
Posté par: Vendo le le 27-03-2012 a 14:26:05

Salut,

Bon je réponds un peu tardivement.

Donc on va commencer par une petite fonction histoire de factoriser.


Code:

function FindSrc($videoCode)
{
$result = '';
$urlPattern = '@src="http://.*?"@i';

if (preg_match($urlPattern, $videoCode, $matches) == 1)
// pour retirer les src= et "
$result = str_replace(array('src=', '"'), '', $matches[0]);
   
   return $result;
}


Ensuite on va faire un petit exemple pour voir si cela fonctionne bien avec les codes que tu as fourni


Code:

$rutube = '<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83">'
. '</PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM>'
            . '<EMBED src="http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" ></EMBED>'
            . '</OBJECT>';

$dailymotion = '<iframe frameborder="0" width="480" height="270" src="http://www.dailymotion.com/embed/video/xpmt3n"></iframe>'
. '<br /><a href="http://www.dailymotion.com/video/xpmt3n_exclu-video-driss-n-aime-pas-les-pinces_shortfilms" target="_blank">EXCLU VIDEO - Driss n\'aime pas les pinces</a>'
                   . '<i>par <a href="http://www.dailymotion.com/Europe1fr" target="_blank">Europe1fr</a></i>';

$wat = '<iframe src="http://www.wat.tv/embedframe/529435chuPP3r8331179" frameborder="0" style="width: 480px; height: 270px;"></iframe>'
. '<div class="watlinks" style="width:480px;font-size:11px; background:#CCCCCC; padding:2px 0 4px 0; text-align: center;">'
       . '<a target="_blank" class="waturl" href="http://www.wat.tv/video/premieres-images-inedites-4ykdn_4cw81_.html" title="Vidéo Les premi&egrave;res images in&eacute;dites de la Battle entre Atef et Sofia sur wat.tv">'
       . '<strong>Les premières images inédites de la Battle entre Atef et Sofia</strong></a>'
       . ' Vidéo <a class="waturl altuser" href="http://www.wat.tv/the-voice" title="Retrouvez toutes les vidéos the-voice sur wat.tv">the-voice</a>'
       . ' sélectionnée dans <a href="http://www.wat.tv/guide/tv" class="waturl alttheme" title="Toutes les vidéos Replay TV sont sur wat.tv">Replay TV</a> </div>';

// Appelle de la fonction

echo '<b>rutube:</b> '.FindSrc($rutube);

echo '<br><b>dailymotion:</b> '.FindSrc($dailymotion);

echo '<br><b>wat:</b> '.FindSrc($wat);


Tu auras comme résultat:
rutube: http://video.rutube.ru/e0b2f7bacaa88ceec7e0c973a3f35c83
dailymotion: http://www.dailymotion.com/embed/video/xpmt3n
wat: http://www.wat.tv/embedframe/529435chuPP3r8331179

Titre: Re:echo intelligent ?
Posté par: Nheavy le le 27-03-2012 a 18:39:35

Merci beaucoup pour ton aide,
c'est super !

je te souhaite une bonne continuation !


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.