IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problèmes avec preg_replace()


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Sianobel
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2007
    Messages : 54
    Par défaut Problèmes avec preg_replace()
    Bonjour,

    J'ai voulu réutiliser une de mes anciennes fonctions qui fonctionnait à l'époque et j'ai ce message d'erreur:
    preg_replace(): Compilation failed: unmatched parentheses at offset 2
    J'ai beau relire mon code, je ne vois pas où ça coince. Je ne suis qu'une autodidacte en même temps. Ce que j'ai trouvé sur le net ne m'a pas aidé à comprendre mon erreur -_- Voici ma fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    function formatage_texte($message) {
    	$selection_code=mysql_query("SELECT * FROM smiley");
    	$selection_img=mysql_query("SELECT * FROM smiley");
     
    	$non_formate = array(
    		'/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i',
    		'`\[italique\](.+)\[/italique\]`isU',  
    		'`\[gras\](.+)\[/gras\]`isU',
    		'`\[souligne\](.+)\[/souligne\]`isU',
    		'`\[barre\](.+)\[/barre\]`isU',
    		'`\[lien\](.+)\[/lien\]`isU',
    		'`\[lien url="(.+)"\](.+)\[/lien\]`isU',
    		'`\[image\](.+)\[/image\]`isU',
    		'`\[center\](.+)\[/center\]`isU',
    		'`\[citation\](.+)\[/citation\]`isU',
    		'`\[citation nom="(.+)"\](.+)\[/citation\]`isU',
    		'`\[citation lien="(.+)"\](.+)\[/citation\]`isU',
    		'`\[taille valeur="(.+)"\](.+)\[/taille\]`isU',
    		'`\[position valeur="(.+)"\](.+)\[/position\]`isU',
    		'`\[couleur valeur="(.+)"\](.+)\[/couleur\]`isU',
    	);  
     
    	while($recap_code = mysql_fetch_assoc($selection_code)) {
    		$non_formate[] = "`$recap_code[ code ]`isU";
    	}
     
    	$formate = array(  
    		'<a href="$1" target="_blank">$1</a>',
    		'<em>$1</em>',  
    		'<strong>$1</strong>',
    		'<u>$1</u>',
    		'<del>$1</del>', 
    		'<a href="$1" target="_blank">$1</a>',
    		'<a href="$1" target="_blank">$2</a>',
    		'<img src="$1" alt="Image utilisateur" />',
    		'<center>$1</center>',
    		'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
    		'<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
    		'<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
    		'<font size="$1">$2</font>',
    		'<div style="float:$1;">$2</div>',
    		'<font color="$1">$2</font>',
    	); 
     
    	while($recap_img = mysql_fetch_assoc($selection_img)) {
    		$formate[] = "<img src='img/smiley/$recap_img[img]' />";
    	}
     
    	$message = htmlspecialchars($message);
    	$message = preg_replace($non_formate, $formate, $message);
     
    	$message = nl2br($message);
     
    	return $message;
    }
    Un tout grand merci d'avance pour l'aide apporté et le temps passé sur mon message ^^

    PS: Le [ code ] dans la fonction est normal car collé il fait buggé les balises du forum

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour debuguer il faudrait ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $non_formate . " => " . $formate . '<br/>'; //ligne de debug
    $message = preg_replace($non_formate, $formate, $message); // ligne existante
    Pour voir quelle expression est juste avant l'erreur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Par défaut
    Bonjour,

    je ne pense pas que cela est un lien mais fait attention avec le htmlspecialchars, si tu le laisse les guillemet vont se transformer en
    &quot;
    et les regex contenant ces derniers ne valideront pas la chaine .

    En dehors de cela je ne vois pas trop ce qui peut buggué à vue d’œil, mais bon il faudrait en effet faire une petit débugguage comme l'a indiqué sabotage .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] problème avec preg_replace
    Par mike_chti dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2008, 18h12
  2. [RegEx] UTF8, problème avec preg_replace
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2008, 17h42
  3. [RegEx] Problème avec preg_replace
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 28/05/2006, 00h10
  4. [RegEx] Problème avec preg_replace
    Par Vinzius dans le forum Langage
    Réponses: 4
    Dernier message: 08/05/2006, 02h06
  5. [RegEx] problème avec preg_replace
    Par carlos20 dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo