Problème expression régulière


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1443
Inscription: 2 Fév 2003

Problème expression régulière

Message le Ven Avr 01, 2011 4:38

Bonjour,

Voila, j'ai le bout de code suivant
Code: Tout sélectionner
$displayevents.=substr($list_events[3], 0, 42)."...";
preg_match("/".substr($list_events[3], 0, 42)."(.*)/", $list_events[3], $resultat);
$displayevents.=" <a href='/#' onClick=\"bascule('event$list_events[0]'); return false;\"><img src='design/plus.gif' alt='' /> More</a>";
$displayevents.="<div id='event$list_events[0]' style='display:none;'>...$resultat[1]</div><br />";


Donc, vous voyez qu'il me prends les 42 premiers caractères de la chaine $list_events[3]
Puis dans $resultat il me met les la fin de la chaine de caractères $list_events[3] (du caractère 43 jusqu'à la fin)

Puis il m'affiche la fin quand je clique sur "more", tout simple.

Cepandant, cela ne marche pas si les 42 premiers caractères de la chaine $list_events[3] contient le caractère (

Surement à cause du preg_match
Code: Tout sélectionner
preg_match("/".substr($list_events[3], 0, 42)."(.*)/", $list_events[3], $resultat);


Car ca me ferait par exemple si je remplace $list_events[3] par un exemple avec une (
Code: Tout sélectionner
preg_match("/".substr('Exemple avec ( fin', 0, 42)."(.*)/", "Exemple avec ( fin", $resultat);


Il doit y avoir un conflit de parenthère (

Voila, je ne sais pas comment résoudre ça

Si quelqu'un à une idée.

Merci


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: Problème expression régulière

Message le Ven Avr 01, 2011 7:44

Un petit preg_quote, et le tour est joué ;)

Pour les trois petits points, il y a un caractère approprié. Cadeau : …
Je peux comprendre que, sous Windows, ce ne soit pas simple à utiliser les caractères spéciaux. Un peu comme pour utiliser les caractères accentués.


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1443
Inscription: 2 Fév 2003

Re: Problème expression régulière

Message le Ven Avr 01, 2011 13:03

Super!!!
Merci
Il m'a suffit d'entourer mon expression
Code: Tout sélectionner
substr($list_events[3], 0, 42)

Par \Q et \E

Code: Tout sélectionner
preg_match("/\Q".substr($list_events[3], 0, 42)."\E(.*)/", $list_events[3], $resultat);

pour échapper tout caractère avec une signification comme [] ou ()

:D

Plein de petit détails pratique à connaitre

Merci bien


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité