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

Signaler
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
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;
    }
}

5 réponses

Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
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.
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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.
à+
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
J'ai trouvé. Suffisait de faire \r à la place de \n dans mon cas.
Merci à plus
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Merci, c'est ok
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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!