[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 :)


3 réponses

vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
314
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