Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2006, 14h58   #1
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 495
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 495
Points : 306
Points : 306
Par défaut Récupérer une valeur à la suite d'une chaine

J'aimerais récupérer la valeur du champ HOSTNAME dans ce texte.
Ce texte est tiré d'un mail outlook

Citation:
SYSTEM_ID=094892384214
HOSTNAME=RTF-GHB-S203
SNMP_LOCATION=Salle AlphaProduction

Avec des limitations des deux cotés je sais faire, mais ici, je n'ai qu'un retour à la ligne ... \r ou \n ne fontionne pas. Il existe une solution ?
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2006, 21h40   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
Salut, on dirait que cette structure est celle d'un fichier INI, tu peux utiliser la fonction parse_ini_file
Dans ton cas, tu peux faire :
Code :
1
2
3
4
<?php
$ini = parse_ini_file('mon_fichier.ini');
echo $ini['HOSTNAME'];
?>
Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2006, 23h41   #3
Membre habitué
 
Inscription : mars 2003
Messages : 154
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 154
Points : 145
Points : 145
Envoyer un message via MSN à Orgied
si le texte est tiré d'un e-mail, ce n'est pas un fichier ini.

j'avais écrit une fonction qui se trouve dans les commentaires de la fonction ereg sur le manuel de php en ligne à l'époque. elle sert à retirer des portions de textes dans un document et retourne l'info sous forme de tableau.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function Return_Substrings($text, $sopener, $scloser)
               {
               $result = array();
 
               $noresult = substr_count($text, $sopener);
               $ncresult = substr_count($text, $scloser);
 
               if ($noresult < $ncresult)
                       $nresult = $noresult;
               else
                       $nresult = $ncresult;
 
               unset($noresult);
               unset($ncresult);
 
               for ($i=0;$i<$nresult;$i++) 
                       {
                       $pos = strpos($text, $sopener) + strlen($sopener);
 
                       $text = substr($text, $pos, strlen($text));
 
                       $pos = strpos($text, $scloser);
 
                       $result[] = substr($text, 0, $pos);
 
                       $text = substr($text, $pos + strlen($scloser), strlen($text));
                       }
 
               return $result;
               }
Après quelques temps, une autre personne avait améliorer cette fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function returnSubstrings($text, $openingMarker, $closingMarker) {
   $openingMarkerLength = strlen($openingMarker);
   $closingMarkerLength = strlen($closingMarker);
 
   $result = array();
   $position = 0;
   while (($position = strpos($text, $openingMarker, $position)) !== false) {
     $position += $openingMarkerLength;
     if (($closingMarkerPosition = strpos($text, $closingMarker, $position)) !== false) {
       $result[] = substr($text, $position, $closingMarkerPosition - $position);
       $position = $closingMarkerPosition + $closingMarkerLength;
     }
   }
   return $result;
  }
si le premier cas ne fonctionne pas, tu pourrais peut-être créer une fonction sur base de ces exemples.
Orgied est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 00h37   #4
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 39
Points : 39
Par défaut un solution possible

si j'ai bien compris ....
Code :
1
2
3
4
5
6
7
8
<?php
$string="SYSTEM_ID=094892384214
 HOSTNAME=RTF-GHB-S203
 SNMP_LOCATION=Salle AlphaProduction";
 
 $strposHOST=strpos($string,"HOSTNAME=");
 echo substr($string,$strposHOST+strlen("HOSTNAME="),strpos($string,"SNMP_LOCATION=") - ($strposHOST+strlen("HOSTNAME=")));
?>
voila , tu me dirras si ca te convient
php4life est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h48.


 
 
 
 
Partenaires

Hébergement Web