Condition & regex ?
Résolu
a70m
Messages postés
2763
Date d'inscription
Statut
Contributeur
Dernière intervention
-
a70m Messages postés 2763 Date d'inscription Statut Contributeur Dernière intervention -
a70m Messages postés 2763 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis entrain de mettre en place un code balisé pour un module de rédaction d'articles sur un blog.
Exemple pour mettre en gras : [gras]Texte en gras[ /gras ] etc ... (les espaces dans la balise fermante, c'est parce que CCM n'aime pas sans ;))
Jusqu'ici, tout fonctionne comme je veux, mais je suis face à un problème car dans un soucis de confort pour les rédacteurs, j'aimerai que ce soit le plus simple possible.
Pour les images 4 possibilités :
- Une image affichée telle quelle dans sa taille réelle (et un max-width 100% pour éviter qu'elle ne dépasse le conteneur)
- Une image qu'on souhaite redimensionner
- Une image en miniature qui, lorsqu'on clique dessus, s'ouvre en grand dans une lightbox
- Plusieurs miniatures qui s'ouvrent dans une lightbox sous forme de diapo (il faut qu'elles aient un attribut html en commun)
Pour le moment, j'ai 4 balises différentes, mais je trouve que ça fait un peu beaucoup. J'aimerai pouvoir lier les 2 premiers cas et les 2 derniers, comme par exemple
[image=http://monsite.com/image.jpg:200px] là on redimensionne l'image, mais si on a [image=http://monsite.com/image.jpg] on n'affiche que l'image dans sa taille initiale
Et si en partant d'un de ces deux cas, on pouvait rajouter, si on souhaite l'ouvrir dans une lightbox un :lightbox dans la balise, ça serait le top.
Pour le diapo pas trop d'idées ..;
Sachant que tout fonctionne déjà, mais j'ai 4 regex différentes que je sais gérer, mais les rédacteurs d'articles ne s'y connaissent pas en code, c'est la raison pour laquelle je souhaite simplifier tout ça.
J'espère être assez clair, si ça n'était pas le cas, je vous apporterai les infos qu'il manque.
Cordialement
a70m
Je suis entrain de mettre en place un code balisé pour un module de rédaction d'articles sur un blog.
Exemple pour mettre en gras : [gras]Texte en gras[ /gras ] etc ... (les espaces dans la balise fermante, c'est parce que CCM n'aime pas sans ;))
Jusqu'ici, tout fonctionne comme je veux, mais je suis face à un problème car dans un soucis de confort pour les rédacteurs, j'aimerai que ce soit le plus simple possible.
Pour les images 4 possibilités :
- Une image affichée telle quelle dans sa taille réelle (et un max-width 100% pour éviter qu'elle ne dépasse le conteneur)
- Une image qu'on souhaite redimensionner
- Une image en miniature qui, lorsqu'on clique dessus, s'ouvre en grand dans une lightbox
- Plusieurs miniatures qui s'ouvrent dans une lightbox sous forme de diapo (il faut qu'elles aient un attribut html en commun)
Pour le moment, j'ai 4 balises différentes, mais je trouve que ça fait un peu beaucoup. J'aimerai pouvoir lier les 2 premiers cas et les 2 derniers, comme par exemple
[image=http://monsite.com/image.jpg:200px] là on redimensionne l'image, mais si on a [image=http://monsite.com/image.jpg] on n'affiche que l'image dans sa taille initiale
Et si en partant d'un de ces deux cas, on pouvait rajouter, si on souhaite l'ouvrir dans une lightbox un :lightbox dans la balise, ça serait le top.
Pour le diapo pas trop d'idées ..;
Sachant que tout fonctionne déjà, mais j'ai 4 regex différentes que je sais gérer, mais les rédacteurs d'articles ne s'y connaissent pas en code, c'est la raison pour laquelle je souhaite simplifier tout ça.
J'espère être assez clair, si ça n'était pas le cas, je vous apporterai les infos qu'il manque.
Cordialement
a70m
A voir également:
- Condition & regex ?
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Condition optimale téléphone ✓ - Forum Mobile
- Excel soustraction avec condition ✓ - Forum Excel
- Excel champ calculé avec condition - Forum Excel
8 réponses
Bonsoir,
c'est jouable avec une redirection d'url
si toutes ces images sont dans un dossier en particulier, ça facilite la chose.
par exemple si l'image est dans
/img/articlesblog/art1/image.jpg
tu fais une règle htaccess du genre :
ensuite dans ton fichier img.php
qui se trouve dans le dossier articlesblog dans ce cas mais c'est pour l'exemple. ca dépend comme tu as fait ton truc.
tu fais :
$req = explode(':',$_GET[1]);
de là : req[0] te dit quel image afficher.
et les suivants te disent les arguments que tu as passé.
il ne te reste plus qu'a afficher l'image directement ou de la modifier en php.
Si ton site est beaucoup fréquenté il est préférable de faire un système de cache parce que php devra créer une image à chaque demande.
pour une ligthbox rien à voir. Il faut le faire en js sur un évènement.
c'est jouable avec une redirection d'url
si toutes ces images sont dans un dossier en particulier, ça facilite la chose.
par exemple si l'image est dans
/img/articlesblog/art1/image.jpg
tu fais une règle htaccess du genre :
RewriteCond %{REQUEST_URI} ^/img/articlesblog
RewriteRule ^img/articlesblog/(.+)$ img/articlesblog/img.php?1=$1 [NC,NE,QSA,L]
ensuite dans ton fichier img.php
qui se trouve dans le dossier articlesblog dans ce cas mais c'est pour l'exemple. ca dépend comme tu as fait ton truc.
tu fais :
$req = explode(':',$_GET[1]);
de là : req[0] te dit quel image afficher.
et les suivants te disent les arguments que tu as passé.
il ne te reste plus qu'a afficher l'image directement ou de la modifier en php.
Si ton site est beaucoup fréquenté il est préférable de faire un système de cache parce que php devra créer une image à chaque demande.
pour une ligthbox rien à voir. Il faut le faire en js sur un évènement.
Salut,
Merci de ta réponse, mais je suis pas sûr que je me sois fait correctement comprendre ...
Puisque le but recherché et de simplifier au maximum la rédaction d'un article pour les rédacteur en proposant plusieurs solutions pour afficher les images.
Cordialement
Merci de ta réponse, mais je suis pas sûr que je me sois fait correctement comprendre ...
Puisque le but recherché et de simplifier au maximum la rédaction d'un article pour les rédacteur en proposant plusieurs solutions pour afficher les images.
Cordialement
Ah oui je viens de comprendre !
ben tant pi je t'avais fait un code pour redimensionner les images à la volé par l'url. Préviens si tu le veux que si ça peut être utilise maintenant qu'il est fait...
donc je pense que ce serait plus simple de faire
[image:200px:lightbox=http://mon/image.jpg]
j'essaie de te montrer ça mais ça fait longtemps
ben tant pi je t'avais fait un code pour redimensionner les images à la volé par l'url. Préviens si tu le veux que si ça peut être utilise maintenant qu'il est fait...
donc je pense que ce serait plus simple de faire
[image:200px:lightbox=http://mon/image.jpg]
j'essaie de te montrer ça mais ça fait longtemps
voilà ceci devrait fonctionner :
j'ai testé avec ça :
[image=http://mon/image.jpg]
[image:200px=http://mon/image.jpg]
[image:lightbox=http://mon/image.jpg]
[image:lightbox:200px=http://mon/image.jpg]
[image:200px:lightbox=http://mon/image.jpg]
perdu dans du lorem et plusieurs url et ça fonctionne (contenu de fichier text.txt)
<?php
function callback_replaceImage($m) {
$style = '';
$ligthbox = (!empty($m[3]))? ' onclick="return lightbox(this);"' : '';
if(!empty($ligthbox)) $style .= 'cursor: pointer;';
$style .= (!empty($m[2]))? 'max-width:'.substr($m[2],1).';max-height:'.substr($m[2],1).';' : '';
if(!empty($style)) $style = ' style="'.$style.'"';
return '<img src="'.$m[4].'" alt="image"'.$style.$ligthbox.'/>';
}
function replaceImage($string) {
return preg_replace_callback('#\[image((:[0-9]+px)?(:lightbox)?){0,2}=(.+)\]#U','callback_replaceImage',$string);
}
$string = file_get_contents('text.txt');
echo replaceImage($string);
?>
j'ai testé avec ça :
[image=http://mon/image.jpg]
[image:200px=http://mon/image.jpg]
[image:lightbox=http://mon/image.jpg]
[image:lightbox:200px=http://mon/image.jpg]
[image:200px:lightbox=http://mon/image.jpg]
perdu dans du lorem et plusieurs url et ça fonctionne (contenu de fichier text.txt)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Petite question encore. Mon texte est stocké en "bbCode" dans ma base de données, et lorsque je l'affiche, je fais appel à ma fonction translate(); qui auparavant remplacait [image=http://mon/image.jpg] par <img src="http://mon/image.jpg alt="image /> etc etc ...
Donc quand j'affiche mon contenu depuis la base de données, les données arrivent "codées" en bbCode, et à laide de translate(), je les traduis en html à l'affichage.
Du coup ça fait que dans mon php où je déclare translate() et toutes mes balises [gras] etc, je n'arrive pas à intégrer les deux fonctions que tu as créé dans ma fonction ...
Voici un bout de mon code translate() :
Merci de ton aide
Donc quand j'affiche mon contenu depuis la base de données, les données arrivent "codées" en bbCode, et à laide de translate(), je les traduis en html à l'affichage.
Du coup ça fait que dans mon php où je déclare translate() et toutes mes balises [gras] etc, je n'arrive pas à intégrer les deux fonctions que tu as créé dans ma fonction ...
Voici un bout de mon code translate() :
function translate($messagebbc) { // Gras $messagebbc=str_replace("[gras]", "<span class=\"BBC_gras\">", $messagebbc); $messagebbc=str_replace("[/gras]", "</span>", $messagebbc); // Image $regImage="\[image ?= ?([^\[]*) ?\]"; $messagebbc=ereg_replace($regImage, "<img alt=\"Image\" class=\"BBC_image\" src=\"\\1\" />", $messagebbc); return $messagebbc; }
Merci de ton aide
tu les déclares avant la fonction translate et tu remplaces :
par
si tu veux mettre une class à la balise image tu peux modifier les fonctions pour le faire
$regImage="\[image ?= ?([^\[]*) ?\]"; $messagebbc=ereg_replace($regImage, "<img alt=\"Image\" class=\"BBC_image\" src=\"\\1\" />", $messagebbc);
par
$messagebbc = replaceImage($messagebbc);
si tu veux mettre une class à la balise image tu peux modifier les fonctions pour le faire