[PHP] l'utilisation des expression régulières
Medmidou
Messages postés
38
Statut
Membre
-
Elodie -
Elodie -
Bonjour,
Je veux effectuer plusieurs modifications sur un fichier texte à travers une interface en PHP.
Alors j'ai utilisé ce code et ça marche très bien :
Le problème maintenant ce que je veux effectuer trois autres traitements et je n'ai pas su comment?
D’abord voici le fichier texte, elle contient des centaines de blocs comme celui là :
1. Comment je peux enlever la première et la dernière ligne (les lignes en gras) à l'aide des expression régulières ou autre chose si c'est possible.
2. Comment je peux enlever les espaces a la fin de chaque ligne,j'ai utiliser cette expression régulière mais le problème qu'elle m'enlève même les sauts de ligne :
[code]if (preg_match("#:space:*$#",$donnee[$i])){$donnee[$i]=preg_replace("#:space:*$#","",$donnee[$i]);}[/code]
3. Comment je peux enlever les sauts de lignes vides
Merci d'avance pour l'aide
Je veux effectuer plusieurs modifications sur un fichier texte à travers une interface en PHP.
Alors j'ai utilisé ce code et ça marche très bien :
<?php
$fichier="fichier.txt";
if (file_exists($fichier))
{
if($ouvre=fopen("$fichier","r")) /
{
while (!feof ($ouvre))
{
$lecture = fgets($ouvre, 512);
$donnee=explode("<br>",$lecture);
$combien=count($donnee)-1;
for ($i=0;$i<=$combien;$i++)
{
if (preg_match("#p0*#",$donnee[$i])){$donnee[$i]=preg_replace("#p0*#","/",$donnee[$i]);}
if (preg_match("#[A-Z]-9#",$donnee[$i])){$donnee[$i]=preg_replace("#-9#","9",$donnee[$i]);}
if (preg_match("#/r01s1b0*#",$donnee[$i])){$donnee[$i]=preg_replace("#/r01s1b0*#","-",$donnee[$i]);}
$liste_modif.=$donnee[$i]."";
}
}
}
else
{
echo "L'ouverture du fichier '$fichier' a echoué !!";
exit();
}
}
else
{
echo "Le fichier '$fichier' n'existe pas !!";
exit();
}
fclose($ouvre); // fermeture
$ouvre=fopen("texte.txt","w+");
fwrite($ouvre,$liste_modif);
echo "<center><b>Modification réussie </b></center>";
fclose($ouvre);
?>
Le problème maintenant ce que je veux effectuer trois autres traitements et je n'ai pas su comment?
D’abord voici le fichier texte, elle contient des centaines de blocs comme celui là :
================================================================================ PATH Abis TUN_1006 ================================================================================ ***** MAIN ROUTE ******* [b]TUN9000-4/8c1[/b] TUN9000-15/1 TUN9043-16/2 TUN9043-15/12 TUN9009-1/2 [b]TUN9009-2/24c01[/b] ***** SPARE ROUTE ******* [b]TUN9043-16/2 [/b] TUN9043-15/11 TUN9009-1/1 [b]TUN9009-2/24c01 [/b] ================================================================================ PATH Abis BAR_1017_2 ================================================================================ ***** MAIN ROUTE ******* [b]TUN9001-2/17c01[/b] TUN9001-1/2 TUN9043-15/5 [b]TUN9043-3/17c1 [/b]
1. Comment je peux enlever la première et la dernière ligne (les lignes en gras) à l'aide des expression régulières ou autre chose si c'est possible.
2. Comment je peux enlever les espaces a la fin de chaque ligne,j'ai utiliser cette expression régulière mais le problème qu'elle m'enlève même les sauts de ligne :
[code]if (preg_match("#:space:*$#",$donnee[$i])){$donnee[$i]=preg_replace("#:space:*$#","",$donnee[$i]);}[/code]
3. Comment je peux enlever les sauts de lignes vides
Merci d'avance pour l'aide
A voir également:
- [PHP] l'utilisation des expression régulières
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Expert php pinterest - Télécharger - Langages
2 réponses
Bonjour,
[b]TUN9000-4/8c1[/b]
TUN9000-15/1
TUN9043-16/2
TUN9043-15/12
TUN9009-1/2
[b]TUN9009-2/24c01[/b]
tu fais un délimiteur pour chaque main route et dans chacun,
je pense que cette expression peut fonctionner "[b]!"
! équivaut à \
() ce que tu veux récupérer
[b]TUN9000-4/8c1[/b]
TUN9000-15/1
TUN9043-16/2
TUN9043-15/12
TUN9009-1/2
[b]TUN9009-2/24c01[/b]
tu fais un délimiteur pour chaque main route et dans chacun,
je pense que cette expression peut fonctionner "[b]!"
! équivaut à \
() ce que tu veux récupérer
Déjà regarde, dans les regex, \b qui désigne un début/fin de mot, cela pourrait t'aider je pense.
A mon avis tu est mieux à détecter les ***** MAIN ROUTE ***** et autre, sauter la ligne vide, la ligne inutile, stocker la liste des lignes suivantes jusqu'à ligne vide, et faire le traitement jusqu'à l'avant dernière ligne de donnée.
Je te disais \b :
ainsi cela devrait détecter la fin du mot précédant, puis faire sauter tous les espaces.
Exemple: Trouve le mot "web"
A mon avis tu est mieux à détecter les ***** MAIN ROUTE ***** et autre, sauter la ligne vide, la ligne inutile, stocker la liste des lignes suivantes jusqu'à ligne vide, et faire le traitement jusqu'à l'avant dernière ligne de donnée.
Je te disais \b :
(preg_match("#\b:space:*$#",$donnee[$i])){$donnee[$i]=preg_replace("#\b:space:*$#","",$donnee[$i]);
ainsi cela devrait détecter la fin du mot précédant, puis faire sauter tous les espaces.
Exemple: Trouve le mot "web"
<?php
/* \b, dans le masque, indique une limite de mot, de façon à ce que le mot
"web" uniquement soit repéré, et pas seulement des parties de mots comme
dans "webbing" ou "cobweb" */
if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) {
echo 'Un mot a été trouvé.';
} else {
echo 'Un mot n\'a pas été trouvé.';
}
if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) {
echo 'Un mot a été trouvé.';
} else {
echo 'Un mot n\'a pas été trouvé.';
}
?>