Bonjour,
J'ai appris récemment les expressions régulières et j'ai de gros problèmes avec la balise BBcode \[color\].
Voilà 24h que je tourne en rond...
Tout d'abord, j'ai remplacé les balises comme ceci :
La boucle while sert à pouvoir embriquer des balises.
Or, il y a des exceptions. Lorsqu'une balise [u] (souligner) est placé avant, le texte est coloré mais pas son soulignement.
Pareil pour les liens, ils ne prennent pas la couleur du span.
J'ai donc fini par faire :
C'est une catastrophe :
[color=#EC0E0E][size=16]Nouvelles[/size] façons [url\]https://iconic-i-clash.com[/url][color=Gold] de réagir avec les GIFS ![/color][/color]
[color=Olive][mail\]contact@iconic-i-clash.com[/mail][/color]
[color=DodgerBlue][url\]https://iconic-i-clash.com[/url][/color]
:angel:
[img\]upload/1622128975-82357-capture.png[/img\]
[img\]upload/1622128988-82357-capture2.png[/img\]
Comment est-ce que je peux améliorer mon BBcode \[color\] ?
Aussi, je ne comprends pas la signification de (?<!www) dans #(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))# . C'est étrange de mettre un ? devant une parenthèse, puisque ça signifie doit apparaître 0 ou 1 fois. Je ne comprends pas non plus < et ! signifie la négation ?
Une toute dernière chose: lorsque j'ai une url avec une variable et un &, il est remplacé par & dois-je supprimer amp; de l'url ? C'est bizarre car à chaque modification du billet, amp; est rajouté après & ...
Un tout dernier point concernant <option> et les évènements javascript.
L'évènement onclick ne marche pas sur <option>. C'est énervant.
C'est pourquoi je l'ai mis sur le select. Catastrophe, j'ai pleins de balises qui apparaissent.
J'ai opté pour l'évènement onchange. Or, lorsque l'utilisateur veut utiliser 2 fois la même couleur, il ne peut pas.
Comment puis-je sélectionné l'option Aucune couleur automatiquement après en avoir sélectionné une ?
Un très grand merci pour votre aide !
Modifié par Louis_9876 (27 May 2021 - 17:30)
J'ai appris récemment les expressions régulières et j'ai de gros problèmes avec la balise BBcode \[color\].
Voilà 24h que je tourne en rond...
Tout d'abord, j'ai remplacé les balises comme ceci :
$regle_color4 = '#\[color=(White|DarkRed|LightSalmon|PaleVioletRed|DarkOrange|DarkKhaki|\#EC0E0E|Gold|Olive|LightSeaGreen|RoyalBlue|DodgerBlue|MidnightBlue|ForestGreen|DarkOrchid)\](.+)\[/color\]#isU';
while(preg_match($regle_color4, $contenu)){
$contenu = preg_replace($regle_color4, '<span style="color: $1;">$2</span>', $contenu);
}
$contenu = preg_replace('#\[color[\w./=-]*\]|\[/color\]#isU', '', $contenu);
La boucle while sert à pouvoir embriquer des balises.
Or, il y a des exceptions. Lorsqu'une balise [u] (souligner) est placé avant, le texte est coloré mais pas son soulignement.
Pareil pour les liens, ils ne prennent pas la couleur du span.
J'ai donc fini par faire :
$regle_color1 = '#\[color=(White|DarkRed|LightSalmon|PaleVioletRed|DarkOrange|DarkKhaki|\#EC0E0E|Gold|Olive|LightSeaGreen|RoyalBlue|DodgerBlue|MidnightBlue|ForestGreen|DarkOrchid)\](.*)(<a href="(.+)")(>.+</a>)(.*)\[/color\]#isU';
$regle_color2 = '#(<a href="(.+)">(.*))\[color=(White|DarkRed|LightSalmon|PaleVioletRed|DarkOrange|DarkKhaki|\#EC0E0E|Gold|Olive|LightSeaGreen|RoyalBlue|DodgerBlue|MidnightBlue|ForestGreen|DarkOrchid)\](.+)\[/color\]((.*)</a>)#isU';
$regle_color3 = '#\[u\](.*)\[color=(White|DarkRed|LightSalmon|PaleVioletRed|DarkOrange|DarkKhaki|\#EC0E0E|Gold|Olive|LightSeaGreen|RoyalBlue|DodgerBlue|MidnightBlue|ForestGreen|DarkOrchid)\](.+)\[/color\](.*)\[/u\]#isU';
$regle_color4 = '#\[color=(White|DarkRed|LightSalmon|PaleVioletRed|DarkOrange|DarkKhaki|\#EC0E0E|Gold|Olive|LightSeaGreen|RoyalBlue|DodgerBlue|MidnightBlue|ForestGreen|DarkOrchid)\](.+)\[/color\]#isU';
$contenu = preg_replace($regle_color1, '[color=$1]$2[/color]$3 style="color:$1;"$5[color=$1]$6[/color]', $contenu);
$contenu = preg_replace($regle_color2, '$1[color=$4][u]$5[/u][/color]$6', $contenu);
$contenu = preg_replace($regle_color3, '[u]$1[/u][color=$2][u]$3[/u][/color][u]$4[/u]', $contenu);
while(preg_match($regle_color4, $contenu)){
$contenu = preg_replace($regle_color4, '<span style="color: $1;">$2</span>', $contenu);
}
$contenu = preg_replace('#\[color[\w./=-]*\]|\[/color\]#isU', '', $contenu);
C'est une catastrophe :
[color=#EC0E0E][size=16]Nouvelles[/size] façons [url\]https://iconic-i-clash.com[/url][color=Gold] de réagir avec les GIFS ![/color][/color]
[color=Olive][mail\]contact@iconic-i-clash.com[/mail][/color]
[color=DodgerBlue][url\]https://iconic-i-clash.com[/url][/color]
:angel:
[img\]upload/1622128975-82357-capture.png[/img\]
[img\]upload/1622128988-82357-capture2.png[/img\]
Comment est-ce que je peux améliorer mon BBcode \[color\] ?
Aussi, je ne comprends pas la signification de (?<!www) dans #(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))# . C'est étrange de mettre un ? devant une parenthèse, puisque ça signifie doit apparaître 0 ou 1 fois. Je ne comprends pas non plus < et ! signifie la négation ?
Une toute dernière chose: lorsque j'ai une url avec une variable et un &, il est remplacé par & dois-je supprimer amp; de l'url ? C'est bizarre car à chaque modification du billet, amp; est rajouté après & ...
Un tout dernier point concernant <option> et les évènements javascript.
L'évènement onclick ne marche pas sur <option>. C'est énervant.
C'est pourquoi je l'ai mis sur le select. Catastrophe, j'ai pleins de balises qui apparaissent.
J'ai opté pour l'évènement onchange. Or, lorsque l'utilisateur veut utiliser 2 fois la même couleur, il ne peut pas.
Comment puis-je sélectionné l'option Aucune couleur automatiquement après en avoir sélectionné une ?
Un très grand merci pour votre aide !
Modifié par Louis_9876 (27 May 2021 - 17:30)