Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.regexp > #135
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Newsgroups | fr.comp.lang.regexp |
| Subject | Re: Comment éliminer le CR pris en compte avec $ |
| Date | 2021-08-05 21:17 +0200 |
| Organization | There's no cabale |
| Message-ID | <sehdff$1q4u$1@cabale.usenet-fr.net> (permalink) |
| References | <kcvnggdj0n5opukadqbugps230054gn48n@4ax.com> |
Bonjour,
Le 05/08/2021 à 17:27, Otomatic a écrit :
>
> PHP et preg_match
>
> Soit une regexp très simple :
>
> /^(Listen 0.0.0.0:).*$/m
>
> Faites pour récupérer à partir d'un fichier httpd.conf sous Windows
> — donc avec des fins de ligne CRLF — la ligne :
> Listen 0.0.0.0:80 (80 étant le numéro du port)
> - la ligne complète dans $matches[0]
> - la ligne sans le numéro de port dans $matches[1]
>
> Ça fonctionne très bien, sauf sur un point :
> La chaîne $matches[0] contient systématiquement, à la fin, le
> caractère CR (chr(13)) ce qui se voit très bien par :
>> error_log("matches0=".$matches[0]." - fin=".ord(substr($matches[0],-1,1)));
> qui donne :
>> matches0=Listen 0.0.0.0:80 - fin=13
Ok.
> J'ai essayé plein de trucs, dont les parenthèses non capturantes :
> /^(Listen 0.0.0.0:).*(?:\r)$/m
> /^(Listen 0.0.0.0:).*(?:\r$)/m
Le \r a beau ne pas être capturé par des parenthèses, il fait toujours
partie de la ligne, donc il sera dans $matches[0]. Si tu veux l'exclure
il faut une autre paire de parenthèses capturantes, et lire $matches[1]
et $matches[2] plutôt que $matches[0].
Exemples :
/^((Listen 0.0.0.0:)[^\r\n]*)/
/^((Listen 0.0.0.0:)[0-9]*)/
/^(Listen 0.0.0.0:)([0-9]*)/
Attention :
- dans les deux premiers cas, ce que tu avais dans $matches[1] est
maintenant dans $matches[2] et ce que tu voulais dans $matches[0]
est maintenant dans $matches[1] ;
- dans le second cas, $matches[1] est comme avant mais $matches[2]
ne contient que le numéro de port.
Note : j'ai supprimé le $ et l'option m qui me semblent devenus
inutiles (voire néfaste pour le $).
--
Olivier Miakinen
Back to fr.comp.lang.regexp | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Comment éliminer le CR pris en compte avec $ Otomatic <otomatic@oto.invalid> - 2021-08-05 17:27 +0200
Re: Comment éliminer le CR pris en compte avec $ Olivier Miakinen <om+news@miakinen.net> - 2021-08-05 21:17 +0200
Re: Comment éliminer le CR pris en compte avec $ Otomatic <otomatic@oto.invalid> - 2021-08-06 09:36 +0200
Re: Comment éliminer le CR pris en compte avec $ Olivier Miakinen <om+news@miakinen.net> - 2021-08-07 00:49 +0200
Re: Comment éliminer le CR pris en compte avec $ Otomatic <otomatic@oto.invalid> - 2021-08-07 13:18 +0200
csiph-web