Bonjour,
Les codes php et perl qui suivent ne donnent pas le même résultat, le 1er test php est erroné !
./bug.php
#.+?End#us : KO
#End#us : Ok
./bug.pl
.+?End : Ok
End : Ok
Est-ce que j’ai loupé qqc ou est-ce un bug php ?
Un lecteur sympa pourrait essayer de rejouer les tests et informer de ce qu’il obtient ?
PS : le fihier correspondant est de taille 1Mo … que je n’arrive pas à réduire plus, ‘toutes’ autres modifications entrainant la disparition du problème.
Pour info mon système : Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
[code]#!/usr/bin/php
<?php $contenu=file_get_contents('bug.txt'); function test($filtre) { global $contenu; echo $filtre," : "; if ( preg_match($filtre,$contenu) ) echo "Ok\n"; else echo "KO\n"; } test("#.+?End#us"); test("#End#us"); ?>[/code][code]#!/usr/bin/perl
use strict;
our $contenu=’’;
sub test {
my $filtre=shift;
print $filtre." : ";
if ( $contenu =~ /$filtre/us ) { print “Ok\n”; } else { print “KO\n”; }
}
open(FIC, ‘bug.txt’);
while () {
$contenu.=$_;
}
test(".+?End");
test(“End”);[/code]
bug.txt (978 KB)