Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
395 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  expression reguliere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

expression reguliere

n°412158
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 12:43:09  profilanswer
 

qq m'avait donné sur un topic les regex qu'il utisait,mais je n'arrive pas a les faires marcher
 

 $search = array(
"/\[img\](http|https|ftp|mms)://(\S+)\[/img\]/si",
"/\[center\](.+?)\[/center\]/si",
"/\[left\](.+?)\[/left\]/si",
"/\[right\](.+?)\[/right\]/si",
"/\[justify\](.+?)\[/justify\]/si",
"/\[g\](.+?)\[/g\]/si",
"/\[i\](.+?)\[/i\]/si",
"/\[s\](.+?)\[/s\]/si",
"/\[X\](.+?)/si",
"/\[url=(http|https|ftp|mms)://(.+?)\](.+?)\[/url\]/si",
"/\[url=(\S+)\](.+?)\[/url\]/si",
"/\[url\](.+?)\[/url\]/si",
"/\[code\](.+?)\[/code\]/si",
"/  /",
"/\[#(.+?)\](.+?)\[/#(.+?)\]/si",
"/( |\r\n|\n|\r|:|;)(http|https|ftp|mms)://([^ !\'\"()\r\n]+)/i",
"/( |\r\n|\n|\r|:|\(|\))www\.([^ !\'\"()\r\n]+)/i",
"/( |\r\n|\n|\r|:|;)([^ !\'\"()\r\n;:]+)(@)([^ !\'\"()\r\n;]+)(\.)([^ !\'\"()\r\n;]+)/i",
"/(\r\n)/"
);
 
$replace = array(
"<img src=\"\\1://\\2\" alt=\"\\1://\\2\" title=\"\\1://\\2\" />",
"<div align=\"center\">\\1</div>",
"<div align=\"left\">\\1</div>",
"<div align=\"right\">\\1</div>",
"<div align=\"justify\">\\1</div>",
"<b>\\1</b>",
"<i>\\1</i>",
"<u>\\1</u>",
"<li>\\1</li>",
"<a href=\"\\1://\\2\" target=\"_blank\" class=\"lientopic2\">\\3</a>",
"<a href=\"http://\\1\" target=\"_blank\" class=\"lientopic2\">\\2</a>",
"<a href=\"\\1\" target=\"_blank\" class=\"lientopic2\">\\1</a>",
"<table width=\"90%\" border=\"0\" bgcolor=\"#000000\" cellspacing=\"1\" cellpadding=\"2\"><tr><td bgcolor=\"#FFFFFF\"><font face=\"Courier\" size=\"2\">\\1</font></td></tr></table>",
"  ",
"<font color=\"\\1\">\\2</font>",
"\\1<a href=\"\\2://\\3\" target=\"_blank\" class=\"lientopic2\">\\2://\\3</a>",
"\\1<a href=\"http://www.\\2\" target=\"_blank\" class=\"lientopic2\">www.\\2</a>",
"\\1<a href=\"mailto:\\2@\\4\\5\\6\" target=\"_blank\" class=\"lientopic2\">\\2@\\4\\5\\6</a>",
" <br />"
);
 


j'utilise cela:
 
$reponse = preg_replace($search,$replace,$reponse);
 
et ca me marque plein de message d'erreur:
 
 

Warning: Unknown modifier '/' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'c' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'l' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'r' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'j' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'g' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier '\' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier '\' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier '/' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'r' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'r' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier 'c' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier '#' in c:\www\forum\topic.php on line 266
 
Warning: Unknown modifier '/' in c:\www\forum\topic.php on line 266
 
et ca continue....


 
vous voyez pas d'ou viens le probleme ?

mood
Publicité
Posté le 01-06-2003 à 12:43:09  profilanswer
 

n°412160
gizmo
Posté le 01-06-2003 à 12:48:38  profilanswer
 

avec l'affichage des numéros de ligne, ca serait mieux...

n°412161
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 12:49:40  profilanswer
 

gizmo a écrit :

avec l'affichage des numéros de ligne, ca serait mieux...

la ligne 266 c'est celle la:  


$reponse = preg_replace($search,$replace,$reponse);

n°412167
gizmo
Posté le 01-06-2003 à 13:02:38  profilanswer
 

ok, compris. remplace déjà tous les \\x par $x qui est la nouvelle syntaxe, ca devrait te montrer facilement ton erreur ;)

n°412169
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 13:15:30  profilanswer
 

gizmo a écrit :

ok, compris. remplace déjà tous les \\x par $x qui est la nouvelle syntaxe, ca devrait te montrer facilement ton erreur ;)

je crois que c'est ses regex qui ne sont pas bonne car j'ai remplacer une ligne pour tester:
 
$reponse = preg_replace("/\[g\](.+?)\[/g\]/si", "<b>\\1</b>", $reponse);
$reponse = preg_replace('/(\[g\])(.*?)(\[\/g\])/', "<b>\\2</b>", $reponse);
 
et la ca marche.Il avait oublié de mettre des parenthese.
 
finallement,je crois que je vais faire mes propres regex :D

n°412174
gizmo
Posté le 01-06-2003 à 13:19:33  profilanswer
 

RAV

n°412175
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 13:20:28  profilanswer
 
n°412176
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 13:22:55  profilanswer
 


-> Rien A Voir
-> Rien A Vendre
-> demmeRdes toi maintenAnt sale Vulve
 
 :??:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412177
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 13:24:48  profilanswer
 

simogeo a écrit :


-> Rien A Voir
-> Rien A Vendre
-> demmeRdes toi maintenAnt sale Vulve
 
 :??:  

:lol: merci
 
en effet RAV
 
le probleme venait de la:
 

Citation :

\[/g\]/ ->  \[\/g\]/

n°412208
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 15:49:06  profilanswer
 

j'ai un probleme avec cette expression:
 

/( |\r\n|\n|\r|:|;)(http|https|ftp|mms)\:\/\/([^ !\'\"()\r\n]+)/i


 
c'est pour detecter un lien,met ca detecte mal l'url.Cela se passe en general avec les caracteres avant l'url.
Vous voyez pas d'ou viens le problemes ?

mood
Publicité
Posté le 01-06-2003 à 15:49:06  profilanswer
 

n°412210
gizmo
Posté le 01-06-2003 à 15:56:15  profilanswer
 

je vois pas bien l'intérêt de ca: ( |\r\n|\n|\r|:|;)  en début de regexp.  
Et le reste m'a l'air assez tordu comme manière d'arreter la sélection.


Message édité par gizmo le 01-06-2003 à 15:56:53
n°412212
orazur
Posté le 01-06-2003 à 16:05:45  profilanswer
 

je profite de ce topic pour poser une ptite question qui a aucun rapport : c koa la fonction pour afficher le temps dexecution de toutes les requetes mysql executées ?
g cherché mais je trouve po  :sweat:

n°412215
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 16:11:39  profilanswer
 

gizmo a écrit :

je vois pas bien l'intérêt de ca: ( |\r\n|\n|\r|:|;)  en début de regexp.  
Et le reste m'a l'air assez tordu comme manière d'arreter la sélection.

ben j'en sais rien,je commence a aprendre les regex aujourd'hui.Si tu as un conseil,je veux bien :)
 
j'ai deja reussi a faire l'url lorsque c'est en debut de topic:
 

/^(http|https|ftp|mms)\:\/\/([^ !\'\"()\r\n]+)/i


 
maintenant il me manque lorsque l'url est au milieu du message.
 
tu voix pas comment faire?


Message édité par forummp3 le 01-06-2003 à 16:11:49
n°412216
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 16:27:58  profilanswer
 

orazur a écrit :

je profite de ce topic pour poser une ptite question qui a aucun rapport : c koa la fonction pour afficher le temps dexecution de toutes les requetes mysql executées ?
g cherché mais je trouve po  :sweat:  


y'a une fonction PHP pour ça ? m'etonnerait
a mon avis il faut se servir d'une classe de bench et poser un marqueur avant et en fin de requête  :)  
( http://www.phpteam.net/affiche.php?quoi=pear_bench1 )


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412241
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 17:34:57  profilanswer
 

forummp3 a écrit :

ben j'en sais rien,je commence a aprendre les regex aujourd'hui.Si tu as un conseil,je veux bien :)
 
j'ai deja reussi a faire l'url lorsque c'est en debut de topic:
 

/^(http|https|ftp|mms)\:\/\/([^ !\'\"()\r\n]+)/i


 
maintenant il me manque lorsque l'url est au milieu du message.
 
tu voix pas comment faire?

j'en ai marre,je trouve pas  :cry:

n°412245
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 17:57:17  profilanswer
 

heuuu si tu veux ... j'en ai une toute faite que j'avais choppée pour un projet  :whistle:


Message édité par simogeo le 01-06-2003 à 17:57:35

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412248
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 18:07:45  profilanswer
 

simogeo a écrit :

heuuu si tu veux ... j'en ai une toute faite que j'avais choppée pour un projet  :whistle:

je veux bien :)

n°412250
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 18:15:13  profilanswer
 

Code :
  1. $text_link = eregi_replace( "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\" CLASS=\"lien2\">\\1://\\2\\3</a>", $text);


 
 [:southpark1]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412252
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 18:20:14  profilanswer
 

simogeo a écrit :

Code :
  1. $text_link = eregi_replace( "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\" CLASS=\"lien2\">\\1://\\2\\3</a>", $text);


 
 [:southpark1]  

phpinfo.net non? :D
 

n°412257
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 18:24:44  profilanswer
 

forummp3 a écrit :

phpinfo.net non? :D


je ne me souviens plus exactement mais fort possible  :D


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412259
gizmo
Posté le 01-06-2003 à 18:29:02  profilanswer
 

simogeo a écrit :

Code :
  1. $text_link = eregi_replace( "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\" CLASS=\"lien2\">\\1://\\2\\3</a>", $text);




 
comment qu'elle est pourrie cette regexp
 [:ddr555]

n°412261
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 18:33:50  profilanswer
 

gizmo a écrit :


comment qu'elle est pourrie cette regexp
 [:ddr555]  


pourquoi  :??:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412264
gizmo
Posté le 01-06-2003 à 18:36:41  profilanswer
 

parce que pour elle, m://? c'est une url valide :sarcastic:

n°412265
simogeo
j'ai jamais tué de chats, ...
Posté le 01-06-2003 à 18:42:31  profilanswer
 

c'est con ça :/


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°412309
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 20:37:29  profilanswer
 

gizmo a écrit :

parce que pour elle, m://? c'est une url valide :sarcastic:  

tu crois que http://? c'est mieux :D
 
sinon t'as pas une idée pour ma regex ?

n°412332
gizmo
Posté le 01-06-2003 à 21:41:20  profilanswer
 

non, mais bon, joce et les regexp... :sarcastic:
c'est pas très dur pourtant. il suffit juste de savoir ce que tu autorise comme type d'url.
Par exemple, cette regexp autorise toute url qui commence par http, https, ftp, mms ou www mais refuse les url avec login et mot de passe (utilisation du @) et les url internes (type http://localhost/).
 
/(((http|https|ftp|mms)\:\/\/){0,1}|www\.)(\w+?)(\.)([^!\"\'()\r\n ]+?)/
 
Y a moyen de faire plus restrictif ou plus permissift, mais ca allonge la regexep car on split les morceaux.

n°412337
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 01-06-2003 à 21:58:57  profilanswer
 

gizmo a écrit :

non, mais bon, joce et les regexp... :sarcastic:
c'est pas très dur pourtant. il suffit juste de savoir ce que tu autorise comme type d'url.
Par exemple, cette regexp autorise toute url qui commence par http, https, ftp, mms ou www mais refuse les url avec login et mot de passe (utilisation du @) et les url internes (type http://localhost/).
 
/(((http|https|ftp|mms)\:\/\/){0,1}|www\.)(\w+?)(\.)([^!\"\'()\r\n ]+?)/
 
Y a moyen de faire plus restrictif ou plus permissift, mais ca allonge la regexep car on split les morceaux.

mais mon probleme c'est qu'il y a les reges pour les images,donc,si j'ai <img="http://www.site.com/ttt.jpg"> ca va me transforme ca en url :/

n°412376
gizmo
Posté le 02-06-2003 à 00:08:25  profilanswer
 

bah dans ce cas, il faut savoir ce que tu permets: des url avec un espace devant ou non, derrière un :, etc... et sur ces bases tu construis le début de ta regexp.

n°412427
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 02-06-2003 à 08:51:18  profilanswer
 

gizmo a écrit :

bah dans ce cas, il faut savoir ce que tu permets: des url avec un espace devant ou non, derrière un :, etc... et sur ces bases tu construis le début de ta regexp.

vu que j'ai commencer a aprendre hier,je metrise pas trop encore.En fait il faut qu'il y ait quelconque caractere avant,ensuite un espace,puis ta chaine.
mais je vois pas comment faire le debut de la chaine,car j'avais fais  (.*[:blank:]) mais ca a l'air de ne pas marcher :??:
peut etre que je m'y prend mal :/

n°412443
gizmo
Posté le 02-06-2003 à 09:30:00  profilanswer
 

donc la chaine commence par un espace. il suffit donc de rajouter \s au début de la chaine.
 
mais ce que tu me dis n'est pas cohérent avec le fait d'avoir des url en début de post. Il faudrait plutôt éviter tous les caractères spéciaux qui sont repris dans les autres regexp.

n°412538
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 02-06-2003 à 10:45:49  profilanswer
 

gizmo a écrit :

donc la chaine commence par un espace. il suffit donc de rajouter \s au début de la chaine.
 
mais ce que tu me dis n'est pas cohérent avec le fait d'avoir des url en début de post. Il faudrait plutôt éviter tous les caractères spéciaux qui sont repris dans les autres regexp.

pourquoi c'est incoherant?
Si le gars cherche un site,ou quelque et qu'on lui reponde seulement avec une url,ben ca marche.
Mais bon il y surement une meilleur solutions.

n°415345
Shine
Posté le 03-06-2003 à 23:04:29  profilanswer
 

gizmo a écrit :

non, mais bon, joce et les regexp... :sarcastic:
c'est pas très dur pourtant. il suffit juste de savoir ce que tu autorise comme type d'url.
Par exemple, cette regexp autorise toute url qui commence par http, https, ftp, mms ou www mais refuse les url avec login et mot de passe (utilisation du @) et les url internes (type http://localhost/).
 
/(((http|https|ftp|mms)\:\/\/){0,1}|www\.)(\w+?)(\.)([^!\"\'()\r\n ]+?)/
 
Y a moyen de faire plus restrictif ou plus permissift, mais ca allonge la regexep car on split les morceaux.


 
ton truc ne vérifie pas si c'est a la suite d'un mot, ds une image, en debut de post ...
 

n°415430
Shine
Posté le 03-06-2003 à 23:19:46  profilanswer
 

gizmo a écrit :

je vois pas bien l'intérêt de ca: ( |\r\n|\n|\r|:|;)  en début de regexp.  
Et le reste m'a l'air assez tordu comme manière d'arreter la sélection.


 
 
Peut etre tordu, mais c'est fonctionnel dans tous les cas ...
j'ai galéré a tester
 
et le debut de la regex, c'est tout simplememt que les scripts tournant sous win et linux interpretent différement le \n ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  expression reguliere

 

Sujets relatifs
Probleme d'expression reguliere[java] expression reguliere
je ne sait aps comment faire une certaine expression regulierebesoin d'un peu d'aide pour une expression régulière
[REGEXP][RESOLU] Expression régulière pour un nom NetBIOS d'ordinateurexpression régulière de manipulation de sources C
[C] expression presque régulière ;)expression regulière
Expression reguliere en php4.0[php, shell, ...] Expression régulière
Plus de sujets relatifs à : expression reguliere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR