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 :

Expression régulière qui fait tout planté !


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Expression régulière qui fait tout planté !
    Bonjour,

    J'ai un gros souci concernant une expression régulière qui me pourri littéralement la vie...
    sachant que je suis débutant dans le domaine (des expressions régulières),
    je demande votre aide sur ce forum..

    Cette expression régulière me fait crasher Apache et me provoque une erreur 500 sur OVH & 1AND1 !

    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
     
    $express_reg_verset = '/\<h2>\<A HREF=#haut NAME="(.*)">(.*)\<\/a>(.*)\<\/h2>((.|\n)*)(\<\/dl compact>|\<\/DL>)/i' ;
     
    $hhh = "<H2><A HREF=#haut NAME=\"48\"><img src=\"../charte/haut.gif\" border=0></A>Gen&egrave;se 48</H2>
    <DL compact>
    <DT><A NAME=\"48.1\"></A>48.1<DD>&nbsp;Apr&egrave;s ces choses, l'on vint dire &agrave; Joseph: Voici, ton p&egrave;re est malade. Et il prit avec lui ses deux fils, Manass&eacute; et &Eacute;phra&iuml;m.
    <DT><A NAME=\"48.2\"></A>48.2<DD>&nbsp;On avertit Jacob, et on lui dit: Voici ton fils Joseph qui vient vers toi. Et Isra&euml;l rassembla ses forces, et s'assit sur son lit.
    <DT><A NAME=\"48.3\"></A>48.3<DD>&nbsp;Jacob dit &agrave; Joseph: Le Dieu tout puissant m'est apparu &agrave; Luz, dans le pays de Canaan, et il m'a b&eacute;ni.
    <DT><A NAME=\"48.4\"></A>48.4<DD>&nbsp;Il m'a dit: Je te rendrai f&eacute;cond, je te multiplierai, et je ferai de toi une multitude de peuples; je donnerai ce pays &agrave; ta post&eacute;rit&eacute; apr&egrave;s toi, pour qu'elle le poss&egrave;de &agrave; toujours.
    <DT><A NAME=\"48.5\"></A>48.5<DD>&nbsp;Maintenant, les deux fils qui te sont n&eacute;s au pays d'&Eacute;gypte, avant mon arriv&eacute;e vers toi en &Eacute;gypte, seront &agrave; moi; &Eacute;phra&iuml;m et Manass&eacute; seront &agrave; moi, comme Ruben et Sim&eacute;on.
    <DT><A NAME=\"48.6\"></A>48.6<DD>&nbsp;Mais les enfants que tu as engendr&eacute;s apr&egrave;s eux seront &agrave; toi; ils seront appel&eacute;s du nom de leurs fr&egrave;res dans leur h&eacute;ritage.
    <DT><A NAME=\"48.7\"></A>48.7<DD>&nbsp;A mon retour de Paddan, Rachel mourut en route aupr&egrave;s de moi, dans le pays de Canaan, &agrave; quelque distance d'&Eacute;phrata; et c'est l&agrave; que je l'ai enterr&eacute;e, sur le chemin d'&Eacute;phrata, qui est Bethl&eacute;hem.
    <DT><A NAME=\"48.8\"></A>48.8<DD>&nbsp;Isra&euml;l regarda les fils de Joseph, et dit: Qui sont ceux-ci?
    <DT><A NAME=\"48.9\"></A>48.9<DD>&nbsp;Joseph r&eacute;pondit &agrave; son p&egrave;re: Ce sont mes fils, que Dieu m'a donn&eacute;s ici. Isra&euml;l dit: Fais-les, je te prie, approcher de moi, pour que je les b&eacute;nisse.
    <DT><A NAME=\"48.10\"></A>48.10<DD>&nbsp;Les yeux d'Isra&euml;l &eacute;taient appesantis par la vieillesse; il ne pouvait plus voir. Joseph les fit approcher de lui; et Isra&euml;l leur donna un baiser, et les embrassa.
    <DT><A NAME=\"48.11\"></A>48.11<DD>&nbsp;Isra&euml;l dit &agrave; Joseph: Je ne pensais pas revoir ton visage, et voici que Dieu me fait voir m&ecirc;me ta post&eacute;rit&eacute;.
    <DT><A NAME=\"48.12\"></A>48.12<DD>&nbsp;Joseph les retira des genoux de son p&egrave;re, et il se prosterna en terre devant lui.
    <DT><A NAME=\"48.13\"></A>48.13<DD>&nbsp;Puis Joseph les prit tous deux, &Eacute;phra&iuml;m de sa main droite &agrave; la gauche d'Isra&euml;l, et Manass&eacute; de sa main gauche &agrave; la droite d'Isra&euml;l, et il les fit approcher de lui.
    <DT><A NAME=\"48.14\"></A>48.14<DD>&nbsp;Isra&euml;l &eacute;tendit sa main droite et la posa sur la t&ecirc;te d'&Eacute;phra&iuml;m qui &eacute;tait le plus jeune, et il posa sa main gauche sur la t&ecirc;te de Manass&eacute;: ce fut avec intention qu'il posa ses mains ainsi, car Manass&eacute; &eacute;tait le premier-n&eacute;.
    <DT><A NAME=\"48.15\"></A>48.15<DD>&nbsp;Il b&eacute;nit Joseph, et dit: Que le Dieu en pr&eacute;sence duquel ont march&eacute; mes p&egrave;res, Abraham et Isaac, que le Dieu qui m'a conduit depuis que j'existe jusqu'&agrave; ce jour,
    <DT><A NAME=\"48.16\"></A>48.16<DD>&nbsp;que l'ange qui m'a d&eacute;livr&eacute; de tout mal, b&eacute;nisse ces enfants! Qu'ils soient appel&eacute;s de mon nom et du nom de mes p&egrave;res, Abraham et Isaac, et qu'ils multiplient en abondance au milieu du pays!
    <DT><A NAME=\"48.17\"></A>48.17<DD>&nbsp;Joseph vit avec d&eacute;plaisir que son p&egrave;re posait sa main droite sur la t&ecirc;te d'&Eacute;phra&iuml;m; il saisit la main de son p&egrave;re, pour la d&eacute;tourner de dessus la t&ecirc;te d'&Eacute;phra&iuml;m, et la diriger sur celle de Manass&eacute;.
    <DT><A NAME=\"48.18\"></A>48.18<DD>&nbsp;Et Joseph dit &agrave; son p&egrave;re: Pas ainsi, mon p&egrave;re, car celui-ci est le premier-n&eacute;; pose ta main droite sur sa t&ecirc;te.
    <DT><A NAME=\"48.19\"></A>48.19<DD>&nbsp;Son p&egrave;re refusa, et dit: Je le sais, mon fils, je le sais; lui aussi deviendra un peuple, lui aussi sera grand; mais son fr&egrave;re cadet sera plus grand que lui, et sa post&eacute;rit&eacute; deviendra une multitude de nations.
    <DT><A NAME=\"48.20\"></A>48.20<DD>&nbsp;Il les b&eacute;nit ce jour-l&agrave;, et dit: C'est par toi qu'Isra&euml;l b&eacute;nira, en disant: Que Dieu te traite comme &Eacute;phra&iuml;m et comme Manass&eacute;! Et il mit &Eacute;phra&iuml;m avant Manass&eacute;.
    <DT><A NAME=\"48.21\"></A>48.21<DD>&nbsp;Isra&euml;l dit &agrave; Joseph: Voici, je vais mourir! Mais Dieu sera avec vous, et il vous fera retourner dans le pays de vos p&egrave;res.
    <DT><A NAME=\"48.22\"></A>48.22<DD>&nbsp;Je te donne, de plus qu'&agrave; tes fr&egrave;res, une part que j'ai prise de la main des Amor&eacute;ens avec mon &eacute;p&eacute;e et avec mon arc.</DL>
     
    <H2><A HREF=#haut NAME=\"48\"><img src=\"../charte/haut.gif\" border=0></A>Gen&egrave;se 48</H2>
    <DL compact>
    <DT><A NAME=\"48.1\"></A>48.1<DD>&nbsp;Apr&egrave;s ces choses, l'on vint dire &agrave; Joseph: Voici, ton p&egrave;re est malade. Et il prit avec lui ses deux fils, Manass&eacute; et &Eacute;phra&iuml;m.
    <DT><A NAME=\"48.2\"></A>48.2<DD>&nbsp;On avertit Jacob, et on lui dit: Voici ton fils Joseph qui vient vers toi. Et Isra&euml;l rassembla ses forces, et s'assit sur son lit.
    <DT><A NAME=\"48.3\"></A>48.3<DD>&nbsp;Jacob dit &agrave; Joseph: Le Dieu tout puissant m'est apparu &agrave; Luz, dans le pays de Canaan, et il m'a b&eacute;ni.
    <DT><A NAME=\"48.4\"></A>48.4<DD>&nbsp;Il m'a dit: Je te rendrai f&eacute;cond, je te multiplierai, et je ferai de toi une multitude de peuples; je donnerai ce pays &agrave; ta post&eacute;rit&eacute; apr&egrave;s toi, pour qu'elle le poss&egrave;de &agrave; toujours.
    <DT><A NAME=\"48.5\"></A>48.5<DD>&nbsp;Maintenant, les deux fils qui te sont n&eacute;s au pays d'&Eacute;gypte, avant mon arriv&eacute;e vers toi en &Eacute;gypte, seront &agrave; moi; &Eacute;phra&iuml;m et Manass&eacute; seront &agrave; moi, comme Ruben et Sim&eacute;on.
    <DT><A NAME=\"48.6\"></A>48.6<DD>&nbsp;Mais les enfants que tu as engendr&eacute;s apr&egrave;s eux seront &agrave; toi; ils seront appel&eacute;s du nom de leurs fr&egrave;res dans leur h&eacute;ritage.
    <DT><A NAME=\"48.7\"></A>48.7<DD>&nbsp;A mon retour de Paddan, Rachel mourut en route aupr&egrave;s de moi, dans le pays de Canaan, &agrave; quelque distance d'&Eacute;phrata; et c'est l&agrave; que je l'ai enterr&eacute;e, sur le chemin d'&Eacute;phrata, qui est Bethl&eacute;hem.
    <DT><A NAME=\"48.8\"></A>48.8<DD>&nbsp;Isra&euml;l regarda les fils de Joseph, et dit: Qui sont ceux-ci?
    <DT><A NAME=\"48.9\"></A>48.9<DD>&nbsp;Joseph r&eacute;pondit &agrave; son p&egrave;re: Ce sont mes fils, que Dieu m'a donn&eacute;s ici. Isra&euml;l dit: Fais-les, je te prie, approcher de moi, pour que je les b&eacute;nisse.
    <DT><A NAME=\"48.10\"></A>48.10<DD>&nbsp;Les yeux d'Isra&euml;l &eacute;taient appesantis par la vieillesse; il ne pouvait plus voir. Joseph les fit approcher de lui; et Isra&euml;l leur donna un baiser, et les embrassa.
    <DT><A NAME=\"48.11\"></A>48.11<DD>&nbsp;Isra&euml;l dit &agrave; Joseph: Je ne pensais pas revoir ton visage, et voici que Dieu me fait voir m&ecirc;me ta post&eacute;rit&eacute;.
    <DT><A NAME=\"48.12\"></A>48.12<DD>&nbsp;Joseph les retira des genoux de son p&egrave;re, et il se prosterna en terre devant lui.
    <DT><A NAME=\"48.13\"></A>48.13<DD>&nbsp;Puis Joseph les prit tous deux, &Eacute;phra&iuml;m de sa main droite &agrave; la gauche d'Isra&euml;l, et Manass&eacute; de sa main gauche &agrave; la droite d'Isra&euml;l, et il les fit approcher de lui.
    <DT><A NAME=\"48.14\"></A>48.14<DD>&nbsp;Isra&euml;l &eacute;tendit sa main droite et la posa sur la t&ecirc;te d'&Eacute;phra&iuml;m qui &eacute;tait le plus jeune, et il posa sa main gauche sur la t&ecirc;te de Manass&eacute;: ce fut avec intention qu'il posa ses mains ainsi, car Manass&eacute; &eacute;tait le premier-n&eacute;.
    <DT><A NAME=\"48.15\"></A>48.15<DD>&nbsp;Il b&eacute;nit Joseph, et dit: Que le Dieu en pr&eacute;sence duquel ont march&eacute; mes p&egrave;res, Abraham et Isaac, que le Dieu qui m'a conduit depuis que j'existe jusqu'&agrave; ce jour,
    <DT><A NAME=\"48.16\"></A>48.16<DD>&nbsp;que l'ange qui m'a d&eacute;livr&eacute; de tout mal, b&eacute;nisse ces enfants! Qu'ils soient appel&eacute;s de mon nom et du nom de mes p&egrave;res, Abraham et Isaac, et qu'ils multiplient en abondance au milieu du pays!
    <DT><A NAME=\"48.17\"></A>48.17<DD>&nbsp;Joseph vit avec d&eacute;plaisir que son p&egrave;re posait sa main droite sur la t&ecirc;te d'&Eacute;phra&iuml;m; il saisit la main de son p&egrave;re, pour la d&eacute;tourner de dessus la t&ecirc;te d'&Eacute;phra&iuml;m, et la diriger sur celle de Manass&eacute;.
    <DT><A NAME=\"48.18\"></A>48.18<DD>&nbsp;Et Joseph dit &agrave; son p&egrave;re: Pas ainsi, mon p&egrave;re, car celui-ci est le premier-n&eacute;; pose ta main droite sur sa t&ecirc;te.
    <DT><A NAME=\"48.19\"></A>48.19<DD>&nbsp;Son p&egrave;re refusa, et dit: Je le sais, mon fils, je le sais; lui aussi deviendra un peuple, lui aussi sera grand; mais son fr&egrave;re cadet sera plus grand que lui, et sa post&eacute;rit&eacute; deviendra une multitude de nations.
    <DT><A NAME=\"48.20\"></A>48.20<DD>&nbsp;Il les b&eacute;nit ce jour-l&agrave;, et dit: C'est par toi qu'Isra&euml;l b&eacute;nira, en disant: Que Dieu te traite comme &Eacute;phra&iuml;m et comme Manass&eacute;! Et il mit &Eacute;phra&iuml;m avant Manass&eacute;.
    <DT><A NAME=\"48.21\"></A>48.21<DD>&nbsp;Isra&euml;l dit &agrave; Joseph: Voici, je vais mourir! Mais Dieu sera avec vous, et il vous fera retourner dans le pays de vos p&egrave;res.
    <DT><A NAME=\"48.22\"></A>48.22<DD>&nbsp;Je te donne, de plus qu'&agrave; tes fr&egrave;res, une part que j'ai prise de la main des Amor&eacute;ens avec mon &eacute;p&eacute;e et avec mon arc.</DL compact>" ;
     
    preg_match_all($express_reg_verset, $hhh, $_result ) ;
    print_r($_result);
    Pouvez vous me dire s'il vous plait où ce situe l'objet du "bug" dans cette expression?

    Comme vous pouvez le voir dans les pièces jointe, Chrome me retourne une erreur "Erreur 324 (net::ERR_EMPTY_RESPONSE) : Le serveur a mis fin à la connexion sans envoyer de données.", logique vu qu'Apache à crasher (un de ces processus fils) comme visible sur la 2ème pièces jointe, logs apache.

    Merci de votre aide.
    Bonne journée, Adam.
    Images attachées Images attachées   

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pour parser de l'HTML on utilise DomDocument pas des expressions régulières.

    Par exemple pour afficher les titres contenu dans les H2 (ce que tu semble vouloir faire avec ta regex) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dom = new DomDocument();
    $dom->loadHTML($hhh);
    $h2 = $dom->getElementsByTagName('h2');
    foreach($h2 as $title) {
    	echo $title->nodeValue.'<br />';
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Expression régulière qui fait tout planté !
    On utilise DomDocument quand on à la certitude qu'une page est bien former.
    Or ici ce n'est pas le cas... et je ne peux vérifier toutes les pages une par une.

Discussions similaires

  1. combobox qui fait tout planté
    Par sambzh24 dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/10/2008, 14h26
  2. [REGEX] expression régulière qui match tout les nombres sauf un
    Par neuromencien dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 28/05/2008, 08h21
  3. [POO] Une classe qui fait tout ?
    Par Nasky dans le forum Langage
    Réponses: 23
    Dernier message: 26/05/2006, 20h02
  4. Réponses: 11
    Dernier message: 24/03/2006, 11h12
  5. Un retour à la ligne qui fait tout foirer !!!!
    Par sami_c dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 27/02/2006, 10h20

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