Détecter fin de ligne dans une chaine de caractères [Résolu]

zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 28 juin 2008 à 14:32 - Dernière réponse : zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention
- 29 juin 2008 à 02:53
Bonjour,
J'ai une chaine de caractères sous cette forme là:

"058493748903
048493
056847264982736491
..."

C'est toujours x chiffres par ligne ou x est un multiple de 6, mais comment faire pour séparer tous les 6 caractères de la chaine
en remarquant les retours lignes. voilà le code que j'ai écrit, mais qui ne marche pas:

$contenu="";
$longueur=6;

for($j=0;$j<strlen($contenu_crypte);$j+=$longueur) // $j + 6 à chaque boucle jusqu'à la fin de la chaine
{
$crypte=substr($contenu_crypte,$j,$longueur); //coupe la chaine tous les 6 caractères
$contenu.=algorithme($crypte);

    if(substr($contenu_crypte,$j+$longueur,2)=="\n") // Ligne qui ne marche pas: détecte le /n et passe à la ligne suivante
    {
    $contenu.="\n";
    $j+=2;
    }
}
Afficher la suite 

Votre réponse

5 réponses

Bling 182 510 Messages postés lundi 27 novembre 2006Date d'inscription 5 juillet 2009 Dernière intervention - 28 juin 2008 à 14:44
+3
Utile
if(substr($contenu_crypte,$j+$longueur,2)=="\n") // Ligne qui ne marche pas: détecte le /n et passe à la ligne suivante
    {
    $contenu.="\n";
    $j+=2;
    }

pourquoi $j+=2; ?

'\n' c'est 1 seul caractere.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bling 182
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 28 juin 2008 à 14:48
+3
Utile
Salut,

je ne comprends pas exactement ce que tu veux faire et il y aurait d'autres façons de procéder, mais essaie avec

if(substr($contenu_crypte,$j+$longueur,1)=="\n")

car un retour à la ligne vaut 1 caractère, même s'il est représenté par \n qui lui en vaut 2.
à+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Evangun
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 29 juin 2008 à 02:53
+3
Utile
J'ai trouvé. Suffisait de faire \r à la place de \n dans mon cas.
Merci à plus
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de zut69
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 28 juin 2008 à 14:57
0
Utile
Merci, c'est ok
Commenter la réponse de zut69
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 28 juin 2008 à 15:09
0
Utile
En fait, y a encore un petit souci.
Je croyais que ma fonction algo retournait qqch de bizarre, mais le souci est dans ce code.

Regarde ce code:

$contenu="";
$longueur=6;

for($j=0;$j<strlen($contenu_crypte);$j+=$longueur)
{
$crypte=substr($contenu_crypte,$j,$longueur); //coupe la chaine tous les 6 caractères

$contenu.=".".$crypte."."; // à la place de ma fonction je rajoute des pts qui entourent mes 6 caractères

    if(substr($contenu_crypte,$j+$longueur,1)=="\n")
    {
    $contenu.="\n";
    $j++;
    }
}

Voila ce que j'ai soumis:

070583231604

162968214814114904

096752031574178309217549117407124618025017223916184973

et ce que j'ai en retour:
.070583..231604..
1629..682148..141149..04
09..675203..157417..830921..754911..740712..461802..501722..391618..4973.

Alors qu'il faudrait que j'ai:

.070583..231604.

.162968..214814..114904.

.096752..031574..178309..217549..117407..124618..025017..223916..184973.

Le souci vient à cause des retours lignes, regarde le début de la deuxième ligne il n'y a que 4 caractères à la place de 6 et le point est à la ligne précédente!
Commenter la réponse de zut69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.