Fonction dans une commande "preg_replace"
Résolu
crocoscore
Messages postés
165
Date d'inscription
Statut
Membre
Dernière intervention
-
crocoscore Messages postés 165 Date d'inscription Statut Membre Dernière intervention -
crocoscore Messages postés 165 Date d'inscription Statut Membre Dernière intervention -
Amis zéros, bonjour :) !
Avant de vous expliquez mon problème, je vais vous montrer ce que je souhaite faire.
Je suis en train de construire un site où l'on peut publier des articles et, dans ces derniers ajouter des images. C'est dernière sont insérer avec un bbcode que voici: "[img]image_exemple.jpg/img". Je souhaite que les images soient disposées une à droite, une à gauche, une à droite, une à gauche ( :-° ...) en utilisant le CSS avec "float: left;" et "float: right;". Le bbcode que j'avais avant de me lancer dans cette mise-en-page donnait "<a href="image_exemple.jpg"><img src="image_exemple.jpg" alt="image" />". Ainsi, le mieux aurait été d'avoir une fonction CSS qui permet de sélectionner un élément sur deux... mais ça n'existe pas :p .
Donc j'ai trouver deux solutions. La première consiste à récupérer le nombre d'image contenus dans l'article, car je le stock dans une table, et de créer une fonction PHP qui créer automatique les propriétés CSS en utilisant "nth-child". Le problème c'est que ça fait un code CSS énorme et qu'en plus c'est pas compatible avec les navigateurs obsolètes (genre, complètement au hasards, ie8 :lol: ).
J'ai donc choisis la seconde mais avec laquelle je rencontre un problème. Donc cette deuxième solution consiste à utiliser une fonction, nommé "recuperID()" qui récupère l'ID de l'image dans la BDD. Si son ID est pair, on place à gauche, sinon, on place à droite. La voici :
<code type="php">
<?php
function recuperID($fichier)
{
include("../include/login.php");
mysql_select_db('v2',$connect) or die ("<h2>Erreur de connexion à la base de donnée.</h2>");
$reponse = mysql_query("SELECT * FROM fichier WHERE nom_fichier='". $fichier ."'");
while ($donnees = mysql_fetch_array($reponse) )
{
$id = $donnees['id'];
$titre = $donnees['titre'];
$description = $donnees['description'];
$timestamp = $donnees['timestamp'];
}
if ($id&1)
{
$left = "left";
echo $left;
}
else
{
$right = "right";
echo $right;
}
?>
}</code>
Mais c'est avec "preg_replace" que je rencontre un problème :( . Voilà ce que j'aurais aimé voir fonctionner:
<code type="php">
<?php
$content = preg_replace(''\[img\](.+)\/img\'isU', '<a href="$2"><img src="$1" alt="" style="float: '. recuperID($1) . ';"/></a>', $content);
?></code>
donc je vous invite à trouver une autre solution si on ne peut résoudre ce problème ^^ .
Merci d'avance, j'attends votre aide avec impatience :) !
Avant de vous expliquez mon problème, je vais vous montrer ce que je souhaite faire.
Je suis en train de construire un site où l'on peut publier des articles et, dans ces derniers ajouter des images. C'est dernière sont insérer avec un bbcode que voici: "[img]image_exemple.jpg/img". Je souhaite que les images soient disposées une à droite, une à gauche, une à droite, une à gauche ( :-° ...) en utilisant le CSS avec "float: left;" et "float: right;". Le bbcode que j'avais avant de me lancer dans cette mise-en-page donnait "<a href="image_exemple.jpg"><img src="image_exemple.jpg" alt="image" />". Ainsi, le mieux aurait été d'avoir une fonction CSS qui permet de sélectionner un élément sur deux... mais ça n'existe pas :p .
Donc j'ai trouver deux solutions. La première consiste à récupérer le nombre d'image contenus dans l'article, car je le stock dans une table, et de créer une fonction PHP qui créer automatique les propriétés CSS en utilisant "nth-child". Le problème c'est que ça fait un code CSS énorme et qu'en plus c'est pas compatible avec les navigateurs obsolètes (genre, complètement au hasards, ie8 :lol: ).
J'ai donc choisis la seconde mais avec laquelle je rencontre un problème. Donc cette deuxième solution consiste à utiliser une fonction, nommé "recuperID()" qui récupère l'ID de l'image dans la BDD. Si son ID est pair, on place à gauche, sinon, on place à droite. La voici :
<code type="php">
<?php
function recuperID($fichier)
{
include("../include/login.php");
mysql_select_db('v2',$connect) or die ("<h2>Erreur de connexion à la base de donnée.</h2>");
$reponse = mysql_query("SELECT * FROM fichier WHERE nom_fichier='". $fichier ."'");
while ($donnees = mysql_fetch_array($reponse) )
{
$id = $donnees['id'];
$titre = $donnees['titre'];
$description = $donnees['description'];
$timestamp = $donnees['timestamp'];
}
if ($id&1)
{
$left = "left";
echo $left;
}
else
{
$right = "right";
echo $right;
}
?>
}</code>
Mais c'est avec "preg_replace" que je rencontre un problème :( . Voilà ce que j'aurais aimé voir fonctionner:
<code type="php">
<?php
$content = preg_replace(''\[img\](.+)\/img\'isU', '<a href="$2"><img src="$1" alt="" style="float: '. recuperID($1) . ';"/></a>', $content);
?></code>
donc je vous invite à trouver une autre solution si on ne peut résoudre ce problème ^^ .
Merci d'avance, j'attends votre aide avec impatience :) !
A voir également:
- Fonction dans une commande "preg_replace"
- Invite de commande - Guide
- Fonction si et - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
2 réponses
Salut,
Je ne me suis jamais servi de ça, mais il me semble que ça demande 4 paramètres preg_replace, et je n'en vois que 2 non ?
https://www.php.net/manual/fr/function.preg-replace.php
Je ne me suis jamais servi de ça, mais il me semble que ça demande 4 paramètres preg_replace, et je n'en vois que 2 non ?
https://www.php.net/manual/fr/function.preg-replace.php
J'ai trouver une solution qui fonction bien. On applique directement le positionnement sur le bbcode. Ainsi, après upload de l'image, si son id est pair, on place à gauche, sinon à droite.
Il ne reste plus qu'à parser ce code avec preg_replace et le tour est joué ! Merci pour ce qui on tenté de m'aider !
$reponse = mysql_query("SELECT * FROM fichier WHERE nom_fichier='". $nom_fichier ."'"); while ($donnees = mysql_fetch_array($reponse) ) { $id = $donnees['id']; $titre = stripslashes($donnees['titre']); $description = stripslashes($donnees['description']); $timestamp = $donnees['timestamp']; } if ($id&1) //gauche (left) { $code = '[img position="gauche" titre="'. $titre . '" description="' . $description . '"]' . $nom_fichier . '[/img]'; } else //droite (right) { $code = '[img position="droite" titre="'. $titre . '" description="' . $description . '"]' . $nom_fichier . '[/img]'; }
Il ne reste plus qu'à parser ce code avec preg_replace et le tour est joué ! Merci pour ce qui on tenté de m'aider !
Tu as des images dans une bdd, et tu veux afficher un coup à droite, un coup à gauche ?
Pourquoi se servir de cette fonction ?
Enfin pour le concept ?