recherche de chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : recherche de chaine

par sacco » 02 mai 2007, 10:16

La dernière solution au final me donne presque la même chose que le trim ou le str_replace le problème reste entier . Pour la dernière comme pour les autres cela donne

ex
[6] => debut generation ******** - le 05/02/2007 4:0:0
[7] => fin generation ******* - le 05
[8] => /02/2007 5:12:56
il ne me complète pas la ligne.

J'ai eu beau enlever \n \r j'ai l'impression qu'il ne me génère pas le fichier de depart sur une seule et même ligne pour palier à cela.

foreach ($Log as $ligne)
    	{
    						
               $ligne= trim($ligne,"\n");
               $ligne = trim($ligne,"\*");
               $ligne= trim($ligne,"\r"); 
    	   echo $ligne;
             }

    						

par Ryle » 02 mai 2007, 08:30

Dans l'idéal, ce qu'il te faudrait c'est recomposer tes véritables lignes (d'autant que ca peut servir pour d'autres choses). Tu peux par exemple tester le début de chaque ligne et voir s'il commence par "debut generation" ou "fin generation"...
$realLog = array();
foreach ($Log as $ligne) {
  if (ereg("^debut", $ligne) || ereg("^fin", $ligne) ) // si la ligne commence par "debut" ou "fin"
    $realLog[] = trim($ligne); // on créer une nouvelle ligne dans la tableau
  else 
    $realLog[(count($realLog) - 1)].= trim($ligne); // sinon on complète la ligne précédente
}

// pour voir le résultat 
echo '<pre>';
print_r($realLog);
echo '</pre>';
A tester :)

ca fait quelques manipulations en plus, mais au final ton tableau devrait contenir une ligne entière de log par ligne.

par jpaul » 01 mai 2007, 19:45

Essaye plustôt trim() ;)

par sacco » 01 mai 2007, 19:16

je pense que pour palier à mon pb c'est que mon fichier texte se retrouve sous forme d'une seule et même ligne mais comment faire pour effacer les retours à la ligne avec str_replace

par sacco » 01 mai 2007, 13:15

j'ai un fichier ou ligne sont du type

debut generation *********************** - le 20/04/2007 4:0:0
fin generation ************************* - le 20/04/2007
4:30:45

ou parfois

debut generation ******* - le 20/04/2007 4:0:0
fin generation ******* - le 20/04/2007 4:30:45


je fais un

foreach ($Log as $ligne)

mais je ne vois pas comment faire à part verifier le strlen mais parfois par exemple pour l'heure 4:0:0 ou 4:30:45

par jpaul » 01 mai 2007, 12:43

Ben si tu es sur que ça ne tient jamais sur plus de 2 lignes pourquoi ne pas concaténer les lignes avant de faire le test ?

Imaginons que ce soit un fichier :

1) lire la permière ligne dans ligneA
puis une boucle j'usqu'à la fin de fichier ou que l'on ait trouvé (je ne sais pas ce que tu veux faire)
2) lire la ligne suivante dnas ligneB
3) concaténer ligneA et ligneB dans concatAB
4) faire le test sur concatAB
5) passer ligneB dans ligneA
Revenir à 2) tant que la boucle n'est pas terminée

recherche de chaine

par sacco » 01 mai 2007, 12:24

Bonjour

mon problème est de rechercher une chaine qui parfois est sur la même ligne entièrement et des fois le début sur une et la fin sur la suivant.

Mon code me ramène bien le premier cas mais forcément pour le deuxième cas juste le début . Comment faire ???

ex
le 20/04
/2007 4:30:45
moi je ne récupère que 20/04 et non 20/04/2007