Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 13h54   #1
Membre du Club
 
Avatar de Wolfy
 
Homme
Autodidacte passionné
Inscription : février 2004
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Autodidacte passionné
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : février 2004
Messages : 92
Points : 60
Points : 60
Par défaut souci avec <li> et <ul> avec un bbcode maison

Voila pour faire simple, j'ai un formulaire avec un petit éditeur ou l'on peut faire mettre du texte en gras, italique, souligné, et un liste de chose.

Je galère un peu avec les remplacement des balises[LIST] en <ul> et[*] en <li>
Code :
1
2
3
4
5
6
[ LIST ]
[ * ]na
[ * ]na
[ * ]na
[ * ]na
[ /LIST ]
et j'utilise des expressions régulière pour remplacer ces balises. Sauf que le code en retour fait un peu ce qu'il veut.
surtout au niveau des retours à la ligne
Code html :
1
2
3
4
5
<p class="description"><ul>
<li> Les axes structurants
 </li><li> Les entrées de ville
 </li><li> Les axes médians
 </li><li> Les ronds-points, carrefours et giratoires
Tout se décale et quand je passe le tout dans un nl2br(), des balises <BR> se glisse entre la fin du texte et les balises fermetures </li> les retour à la ligne sont c'est un peu compliqué pour avoir un code valide.
j'utilise comme rexexp :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
function parse_to_html($message)
{
  $pattern = array (1 => '#\[b\](.*)\[/b\]#Usi',
    2 => '#\[i\](.*)\[/i\]#Usi',
    3 => '#\[u\](.*)\[/u\]#Usi',
    4 => '#\[color=([^\]]*)\](.*)\[/color\]#Usi',
    5 => '#\[size=([\-\+]?\d+)\](.*?)\[/size\]#ise',
    6 => '#\[url=([^\]]*)\](.*)\[/url\]#Usi',
    7 => '#\[url\](.*)\[/url\]#Usi',
    8 => '#\[img\](.*)\[/img\]#Usi',
    // 9 => '#\[\*\](.*)\n#iU',
    // 9 => '/\[\*\]([^(\[\*\])]*)/i',
    // 10 => '#\[list\](.+)\[/list\]#isU',
    // 11 => '#\[list=1\](.+)\[/list\]#isU'
    9 => "#\[list\](.+)\[/list\]#isU",
    10 => '#\[\*\](.+)(?=(</ul>|\[\*\]))#isU',
    11 => '#<ul (.+)>(.+)<li>#isU',
    12 => '#\[list=1\](.+)\[/list\]#isU');
 
  $replacement = array (1 => '<span style="font-weight: bold">$1</span>',
    2 => '<span style="font-style: italic">$1</span>',
    3 => '<span style="text-decoration: underline">$1</span>',
    4 => '<span style="color: $1">$2</span>',
    5 => '<span style="font-size: $1%; line-height: normal">$2</span>',
    6 => '<a href="$1" title="$1">$2</a>',
    7 => '<a href="$1" title="$1">$1</a>',
    8 => '<img src="$1" />',
    // 9 => '<li>$1</li>',
    // 10 => '<ul>$1</ul>',
    // 11 => '<ol>$1</ol>'
    9 => '<ul>$1</ul>',
    10 => "<li> $1 </li>",
    11 => '<ul $1><li>',
    12 => '<ol>$1</ol>');
  $text = stripslashes($message);
  $text = htmlspecialchars($text);
  $text = preg_replace($pattern, $replacement, $text);
  $text = nl2br($text);
  return $text;
}
Et j'avoue qu'au niveau regexp je pêche !
__________________
Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème.
Wolfy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 22h18   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonsoir,

Tu peux t'inspirer de cette source : http://php.developpez.com/telecharge.../BBCode-simple

Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 21h03   #3
Membre du Club
 
Avatar de Wolfy
 
Homme
Autodidacte passionné
Inscription : février 2004
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Autodidacte passionné
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : février 2004
Messages : 92
Points : 60
Points : 60
Ouep ouep, j'ai trouvé ça...
Code php :
1
2
3
4
5
6
<?php
$test = '<ul>[*]list item 1[*]list 
item 2[*]list item 3
</ul>';
echo $out = preg_replace_callback('/\[\*\]([^[]*)\n(?=\[|<)/', create_function('$a', 'return "<li>".nl2br($a[1])."</li>\n";'), $test);
?>
mais je n'arrive pas a comprendre comment ça marche... y'a un truc qui m'échappe... si vous pouviez m'éclairer un peu ça serait coool
__________________
Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème.
Wolfy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 22h26   #4
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonsoir,

Tu peux te référer à la documentation sur les assertions pour avoir plus de détails : http://fr2.php.net/manual/fr/regexp....assertions.php
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web