[PHP]Gestion des images en php.

Résolu/Fermé
Val8787 Messages postés 34 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 27 décembre 2014 - Modifié par Val8787 le 18/11/2011 à 22:15
Val8787 Messages postés 34 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 27 décembre 2014 - 19 nov. 2011 à 20:16
Bonjour, comme l'indique le titre, je suis en train de coder un forum actuellement et j'ai quelque soucis pour afficher les images dans la zone de texte (exemple récupérer les liens d'une image uploader par imashaks pour l'afficher comme le ferait un forum phpBB) Et je sèche un peu :).
Voici quelques morceaux de code.

Message.php
<?php
require 'fonction.php';

echo '<p>'.bbCode(nl2br($message)).'</p>';
?>


Fonction.php
<?php

function bbCode($t)
// remplace les balises BBCode par des balises HTML
{
// barre horizontale
$t=str_replace("[/]", "<hr width=\"100%\" size=\"1\" />", $t);
$t=str_replace("[hr]", "<hr width=\"100%\" size=\"1\" />", $t);

// gras
$t=str_replace("[b]", "<strong>", $t);
$t=str_replace("/b", "</strong>", $t);

// italique
$t=str_replace("[i]", "<em>", $t);
$t=str_replace("/i", "</em>", $t);

// soulignement
$t=str_replace("[u]", "<u>", $t);
$t=str_replace("/u", "</u>", $t);

// alignement centré
$t=str_replace("[center]", "<div style=\"text-align: center\">", $t);
$t=str_replace("/center", "</div>", $t);}

//gestion des URL (ne fonctionne pas)
$regLienSimple="\[url\] ?([^\[]*) ?\/url\";
$regLienEtendu="\[url ?=([^\[]*) ?] ?([^]]*) ?\/url\";
if (ereg($regLienSimple, $t)) $t=ereg_replace($regLienSimple, "<a href=\"\\1\">\\1</a>", $t);
else $t=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\">\\2</a>", $t);

//gestion de la couleur (qui ne fonctionne pas)
$t=str_replace("/color", "</span>", $t);
$regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]";
$t=ereg_replace($regCouleur, "<span style=\"color: \\1\">", $t);

//Gestion des images (qui ne fonctionne pas non plus)
$regImage="\[img\] ?([^\[]*) ?\/img\";
$regImageAlternatif="\[img ?= ?([^\[]*) ?\]";
if (ereg($regImage, $t)) $t=ereg_replace($regImage, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
else $t=ereg_replace($regImageAlternatif, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
?>

Je n'ai pas de problème pour tous ce qui est modification du style de texte tel que italique, gras, etc...
En revanche la gestion des couleurs ne fonctionne pas ainsi que les balise IMG et URL et je ne vois pas pourquoi, si quelqu'un a une idée je suis preneur merci :)


A voir également:

3 réponses

vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 22:24
salut,

pour les url, il ne serais pas plus simple de récupérer l'url entre les balises d'url et de construire ta chaine html avec ?
0
Val8787 Messages postés 34 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 27 décembre 2014
18 nov. 2011 à 22:57
EN fait, récupérer une url en soit n'est pas trop un problème, en fait je le fais en reconnaissant les chaine de caractère commençant par http:// ( faudrait que je pense à faire pareille pour https et ftp) Mais c'est plutôt de retranscrire l'image A PARTIR de l'url
exemple : [IMG]http://etc.../IMG

//créer un lien pour une chaine de caractère commencant par http://
$t = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" target="blank">$0</a>', $t);
0
Val8787 Messages postés 34 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 27 décembre 2014
19 nov. 2011 à 20:16
Bon j'ai finis par réglé mon problème je met quand même ma solution

//gestion des images
$t = preg_replace('#\[IMG\](.+)\[/IMG\]#isU', '<img src="$1"/>', $t);

// lien
$t = preg_replace('#\[url=(.*)\](.+)\[/url\]#isU', '<a href="$1">$2</a>', $t);

// couleur
$t = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $t);

J'en ai profité pour changer un peu mon code qui était n'était plus a jour, de ce fait ceci passe de ça:

// gras
$t=str_replace("[b]", "<strong>", $t);
$t=str_replace("/b", "</strong>", $t);


à ça:
// gras
$t = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $t);

Bonne soirée a vous.
0