begin process at 2012 05 31 02:14:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Web 2.0

 > 

Ajax

 > 

Problème de regex


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de regex

mardi 25 mai 2010 à 17:03:16 | Problème de regex

mohdaef

Bonjour à tous,

Je bloque sur un problème d'expressions régulières.

J'ai réalisé un petit éditeur de texte en Ajax, j'ai implémenté les différentes fonctionnalités des boutons et l'aperçu.

Mais j'ai un soucis sur la mise en forme, lorsque je fait plusieur espaces, quand je récupère le code et l'affiche je n'ai qu'un seule espace d'affiché.
Pour cela je doit remplacer les espaces par  , sauf qu'uil ne doivent être remplacés que hors des balies (balies marquées par les symboles [ et ].

Comment dois-je procéder ?

Merci d'avance.
mardi 25 mai 2010 à 17:45:10 | Re : Problème de regex

Tonio_35

Hello

En php ou en JavaScript ?

En php, ca semble marcher :
Code PHP :
<?php
$chaine = "  toto tata [titi tutu]  dsds titi [ ds]";
echo $chaine.'<br />';
function trim_spaces($matches)
{
    return str_replace(" ", '-', $matches[1]).'['.$matches[2].']';
}
$chaine = preg_replace_callback('#(.*)\[(.*)\]#isU', 'trim_spaces', $chaine);
echo $chaine;
/*
  toto tata [titi tutu]  dsds titi [ ds]
--toto-tata-[titi tutu]--dsds-titi-[ ds]
*/
?>


Je te laisse trouver quoi remplacer pour changer les - en &nbsp;...

_________________________________
Min iPomme
mardi 25 mai 2010 à 17:49:29 | Re : Problème de regex

Tonio_35

C'est une piste... Ca marche pas toujours mon truck bidul... Je vais essayer d'améliorer ça, dis moi si toi tu y arrive...

Genre pour ca ca marche pas :
Code PHP :
<?php
$chaine = "[titi tutu]  texte après ma balise";
$chaine = "Texte sans balise   ";
?>



_________________________________
Min iPomme
mardi 25 mai 2010 à 18:47:49 | Re : Problème de regex

mohdaef

Salut.

Merci pour ton aide, c'est vrai je n'ai pas spécifié en quel langage je voulais le faire tout simplement parce qu'il il me faudrait une version javascript pour l'affichage en temps réel et une version php qui se trouve dasn la fonction de traitement du message avant envoi dans la base de donnée.

J'ai un peu de mal à comprendre comment fonctionne ton code je ne suis pas très à l'aise en regex... mais le problème que tu cite des cas qui ne fonctionnent pas j'y avais pensé avant, et comme solution j'avais pensé à : Il faut remplacer tout les espaces par des &nbsp; puis tout les &nbsp; qui se trouve dans des balises les refaire passer en espaces simple.

Tu en pense quoi ?
mardi 25 mai 2010 à 20:44:58 | Re : Problème de regex

Tonio_35

C'est une solution oui mais ce que j'aime pas trop dans cette solution c'est que tu peux transformer un &nbsp; tappé par l'utilisateur...

Pour ce qui es de ma regex, c'est vrais que je ne l'ai pas expliquée :
#sert de délimiteur à ma regex
(.*)\[( veux dire : tous les caractères se trouvant avant le [
(.*)\] veux dire tout les caractères avant le ].

Ici je créé donc deux groupes d'inconus (.*) tout les caractères avant le [, deuxième groupe (.*) tous les caractères dans le []...
isU : Ce sont les options de la regex.
- i: case insensitive (insensible à la casse)
- s: le caractère spécial . remplace aussi les caractères blancs (\n...)
- U: Ungreedy, s'arrête à la première occurrence trouvée (pratique pour le BBCode, comme dans ton cas).

ensuite preg_replace_callback va appeler la fonction 'trim_spaces' pour les differentes occurences trouvées avec en paramètre les deux groupes de la regex...

Ensuite dans ma fonction trim_spaces, dans le premier groupe je remplace les espaces par des - et je replace le deuxième groupe...

_________________________________
Min iPomme
mardi 25 mai 2010 à 21:19:50 | Re : Problème de regex

mohdaef

Salut,

Impécable merci pour ton explication, Je pense que même si ma regex était fausse la façon de s'y prendre est pas mal.

Dis moi si je me trompe mais il suffit de remplacer les espaces dans la chaine de caractère qui n'est pas entourée de [ et ] ou bien si il existe ces deux symboles autour il faut que le premier soit fermé et le second ouvert et on récupère la chaine se trouvant entre la fermeture et l'ouverture.

Parcontre si le raisonement est bon je ne sais pas comment le transformer en regex.

vendredi 28 mai 2010 à 15:53:52 | Re : Problème de regex

DiGhan

Bonjour,

Pourquoi ne pas placer le texte parsé entre des balises <pre> ?


Cette discussion est classée dans : problème, espaces, regex, balies


Répondre à ce message

Sujets en rapport avec ce message

problèmes des répertoires avec espaces [ par ChocoBiscuit ] salut tout le monde....Voilà... ca fait un peu genre moi g pleins de problèmes hyper importants, mais bon là c'est réellement le cas...Problème : UPLOAD Problème aec les espaces [ par bdgta ] J'ai trouvé ce super code icihttp://www.phpcs.com/code.aspx?ID=23677Je débute en php, et j'aimerais savoir cmt faire pour supprimer les espaces des fi Problème avec les regex [PHP] [ par b4d ] Bonjour.Voilà, j'ai un petit problème avec une regex...Je ne sais pas comment la faire.Pouvez-vous m'aider?Le problème:Je vais lire dans un fichier et Problème de regex [ par tony1239456 ] Bonjour, j'ai un problème au niveau de ma regex. Elle sert à extraire le premier lien qu'elle trouve dans la page et la met dans la variable : $lien[0 Problème regex :-( [ par alphacrash ] Bonjour !Voici mon problème, j'ai crée une regex de ce type:    $regex = '/\[tag:(.*?)]/i';Mon problème est que si la valeur de tag est par exemple : Problème de regex [ par trasher ] Salut, Voilà, je suis entrain de récuperer des infos sur un site avec ce regex : [code=php]<?php preg_match('#Long-m[^"]+trage(.*?)\.#is', $recup, $ Problème espaces - récupération champs formulaire [ par ju0123456789 ] Bonjour J'ai un soucis tout bête, mais ennuyant. J'ai récupère des valeurs de ma BDD dans un champs input, cette donnée s'affiche bien, mais avec des Problème de regex, capture de texte entre 2 caractères [ par b4d ] Bonjour,J'ai un petit problème avec des regex !Après avoir longtemps cherché, j'ai trouvé la solution à mon premier problème. Mais pas au second !J'ai onclick PHP [ par lamine11 ] Bonjour,Voici mon problème :j'ai une requette qui raméne des variables : $row[1],$row[2].......j'affiche ces variables dans tableau : sur le colonne s Problème undefined [ par micky781 ] Bonsoir, voilà je débute en php, j'ai un problème avec le code çi dessous que je n'arrive pas à résoudre ce bout de code marche à part que sur la page


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales