[PHP]Gestion des images en php.
Résolu
Val8787
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Val8787 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Val8787 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
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 :)
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:
- [PHP]Gestion des images en php.
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Des images - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
3 réponses
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 ?
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 ?
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);
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);
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.
//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.