comment decouper une chaine en fonction d 'une sous chaine ?

Eléphanteau du PHP | 13 Messages

21 juil. 2006, 15:55

j ai une chaine $Chain qui contient tout type de caracteres
et notamment des caracteres de saut de ligne 0D0A en hexa

je souhaite ne conserver que la partie qui est avant deux sauts de ligne
0D0A0D0A dans $Chain
j'ai bien dit deux, s'il n'y a qu un saut de ligne, je le garde dans la chaine

si $chain="\0DOAazert\0D0Aqsdfg\0d0a\ghjio\0d0a\0d0Amlkjhetc..etc.."
je souhaite que $Chain devienne donc
"\0DOAazert\0D0Aqsdfg\0d0a\ghjio"

quelle est le plus simple et efficace moyen d y parvenir ?

autre question ? (newbie:;) comment indique t on des caracteres hexa dans une chaine ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 juil. 2006, 16:26

Tu dois pouvoir le faire avec un strpos() pour trouver la position de ta sous-chaine et avec substr() pour la tronquer, ou bien en utilisant les expressions régulières dans preg_match() par exemple...

Pour retrouver les retours charriots de windows, recherche "\r\n" (qui correspondent respectivement aux 0d 0a), il devrait les retrouver même si tu les as encodé en hexa :)

Eléphanteau du PHP | 13 Messages

23 juil. 2006, 02:15

merci de ton aide

voici donc la solution :

$delimiteur="\r\n\r\n";
$Posi= strpos ( $ChainInit, $delimiteur ) ;
$ChainInit=substr ( $ChainInit, 0, $Posi ) ;

ainsi $ChainIinit ne contient plus que la 1ere partie avant les deux sauts de lignes