Découper une chaîne avec un tableau de longueur en param

Découper une chaîne avec un tableau de longueur en param - PHP - Programmation

Marsh Posté le 17-09-2010 à 10:33:04    

:hello:
 
je voudrais découper une chaîne de caractères en fonction d'un tableau qui contient la longueur de chaque sous-chaîne.
 
Exemple :
$str = "azertyuiopqsdfghjklm";
$tab = array(3,4,5,...);
 
Et une fonction qui me retournerait :
$res[0] = "aze";
$res[1] = "rtyu";
$res[2] = "iopqs";
... etc...
 
Pour l'instant, je tourne avec des substr et un tableau en conf mais c'est extrêmement lent.
Je dois découper chaque ligne d'un fichier en fonction de l'octet de départ et d'un longueur... Pas de caractère de séparation, tout est collé.
 
Problème majeur : le fichier fait 3.500.000 ligne pour 1.4Go et les serveurs sont encore en PHP4 :/
 
Y'a pas une fonction qui existe nativement, même en php5 :??:
Ou une astuce pour optimiser ?
 
Merci :jap:


---------------
Trouve ton apprentissage - [Feed-Back]
Reply

Marsh Posté le 17-09-2010 à 10:33:04   

Reply

Marsh Posté le 17-09-2010 à 16:54:40    

Je m'auto-réponds, ça fera un peu de lecture à ceux qui lisent sans poster :D
 
=> sscanf, en bidouillant un peu, ça fonctionne impecc !


---------------
Trouve ton apprentissage - [Feed-Back]
Reply

Marsh Posté le 17-09-2010 à 16:57:26    

ça serait pas mieux au lieu de
- lire une ligne puis la decouper
de faire :
- lire la ligne en la découpant

 

je sais pas comment tu ouvres ton ficher mais ça peut être très important aussi(eviter d'apeler des indexs, faire des seeks à gogo etc...). Sur de si gros fichiers je prefere lire les datas directement :

 

$res[i]=fread(monfich,$tab[i])

 

ou tu crées un type et

 

$montype=fread(monfich,sizeof($montype))


Message édité par rengzehn le 17-09-2010 à 17:00:03
Reply

Marsh Posté le 17-09-2010 à 17:12:27    

Pour la lecture du fichier, fopen + fgets.
 
La lecture en elle-même est relativement rapide. C'est vraiment le découpage de la ligne à coup de substr qui prend du temps :D
 
Par exemple, une ligne d'un certain type pour être découpée en 170 parties...
 
Ca se gère comment les fins de ligne avec fread aussi ? :/
 
Merci d'avoir répondu ^^


---------------
Trouve ton apprentissage - [Feed-Back]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed