Découper une chaîne tous les X caractères [Résolu]

t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention - 30 janv. 2018 à 11:59 - Dernière réponse : t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention
- 1 févr. 2018 à 10:19
Bonjour,

Je souhaiterais découper une chaîne tous les X caractères.
En supposant que $chaîne soit égale à 201220131724, je voudrais découper $chaîne tous les 4 caractères.

Ce que je pense :
Exemple : faire un explode tous les 4 caractères (quelle fonction utilisée, comment l'écrire ?)
Comment trier ces $chaîne en ordre ASC ou DESC ?

Merci pour vos conseils.
Afficher la suite 

8 réponses

Répondre au sujet
astuces72 4242 Messages postés vendredi 15 janvier 2010Date d'inscription 10 février 2018 Dernière intervention - 30 janv. 2018 à 12:04
0
Utile
1
slt

tu as été voir ici ?
http://fr.php.net/manual/fr/function.wordwrap.php
t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention - 30 janv. 2018 à 15:13
Merci astuces72.
Si je teste avec un enregistrement à 8 chiffres ($marg), et que je veux avoir comme résultat 4 et 4
echo wordwrap($marg,4,"<br>\n");

j'ai toujours 1 seul enregistrement à 8 chiffres !?
Et dans le cas où ça fonctionne, comment les classer dans un ordre voulu ?
Commenter la réponse de astuces72
Pitet 2378 Messages postés lundi 11 février 2013Date d'inscription 2 février 2018 Dernière intervention - 30 janv. 2018 à 16:12
0
Utile
5
Salut,

Si tu veux pouvoir trier les parties de la chaine découpée, tu peux aussi regarder du coté de la fonction str_split() pour récupérer les parties de la chaine dans un tableau : http://fr.php.net/manual/fr/function.str-split.php

$monTableau = str_split('abcdefgeh123456789', 4);
sort($monTableau);
var_dump($monTableau);


Bonne journée,
t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention - 30 janv. 2018 à 17:19
str_split() fonctionne sous PHP 5 et 7. Mais là, c'est PHP4 et c'est pour cela que ça ne fonctionne pas je pense .......!
J'ai le message d'erreur
Fatal error: Call to undefined function: str_split() in /mnt/100/sda/1/4/th11/gen_famille/gestion/fiche_indiv.php on line 483
Pitet 2378 Messages postés lundi 11 février 2013Date d'inscription 2 février 2018 Dernière intervention - 30 janv. 2018 à 17:20
Ouch PHP 4, ca ne nous rajeunit pas ^^
Une solution alternative : https://gist.github.com/madebyreformat/2050592
t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention - 30 janv. 2018 à 17:51
Désolé, je n'arrive pas à appliquer la function à mon script.
si j'écris
$marg = substr($tonarray[$i]['date_mariage'], -4);

function str_split($marg) {
	$str_array=array();
	$len=strlen($marg);
	for($i=0; $i<$len; $i++) {
		$str_array[]=$marg{$i};
	}
	return $str_array;
	}

j'ai le message d'erreur
Fatal error: Cannot redeclare str_split() (previously declared in /mnt/100/sda/........
Pitet 2378 Messages postés lundi 11 février 2013Date d'inscription 2 février 2018 Dernière intervention - 31 janv. 2018 à 09:25
Très étrange comme message d'erreur, celui-ci indique que la fonction est déjà déclarée or le message d'erreur de ton premier commentaire indique que la fonction n'existe pas.

Sinon pour faire encore plus simple, une simple boucle avec un substr() tout les 4 caractères devrait fonctionner sur les versions PHP4 et +

$chaine = '201220131724';
$parties = array();

for ($i = 0; $i < strlen($chaine); $i = $i + 4) {
    $parties[] = substr($chaine, $i, 4);
}

var_dump($parties);


Si la chaine peut contenir des caractères multi-octet, les fonctions strlen et substr devraient être remplacées par mb_strlen et mb_substr.
t671 1193 Messages postés lundi 25 février 2008Date d'inscription 4 février 2018 Dernière intervention - 1 févr. 2018 à 10:19
Merci pour ton intervention Pitet !
La solution a été trouvé :
function tri_mariage($a, $b) {
   return substr($a['date_mariage'], -4) > substr($b['date_mariage'], -4);
}

usort($tonarray, "tri_mariage"); 


A ++
Commenter la réponse de Pitet