IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation des expressions regulieres


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Utilisation des expressions regulieres
    Bonjour,
    Je reviens avec une problematique qui m'a toujours posé probleme.
    J'avoue que j'utilise un peu a taton la fonction preg_match et du coup je n'arrive pas a extraire exactement ce que je veux...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $url ='http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=uk&cs=frbsdt1&l=uk&s=bsd&ServiceTag=GPYRTB1';
    			//echo $url;
     
    			$match = array();
    			$outputdata = array();
    			$FILE = fopen($url, 'r');
    			while ($line = fread($FILE, 1024)) {
    			if (preg_match('/System Type:.*?/i', $line, $match3,PREG_OFFSET_CAPTURE)) {
    			var_dump($match3);
    			$text=$match3[0][0];
    			echo $text;
    			$marqueurDebut = "System Type:"; 
    			$debut = strpos( $text, $marqueurDebut ) + strlen( $marqueurDebut ); 
    			$marqueurFin = "Ship Date:"; 
    			$fin = strpos( $text, $marqueurFin ); 
    			$systemtype = substr( $text, $debut, $fin - $debut ); 
    			echo $systemtype;
    			preg_match('/Ship Date:.*?(\d{2}\/\d{2}\/\d{4})/i', $text, $match2,PREG_OFFSET_CAPTURE);
    			//$shipdate= $match2[1][0]; 			
    			$outputdata ["ShipDate"]= codeDate($match2[1][0]);
    			$outputdata ["SystemType"]= strip_tags ($systemtype);
    			//echo '<br>'.$shipdate.'-'.$systemtype.'<br>';
    			}
    Impossible de recuperer ce que je veux...
    Est-ce que cette expression : '/System Type:.*?/i' va bien me recuperer toute la ligne commencant par System Type: ??

    Pour la ligne avec la date, je n'arrive pas a recuperer toutes les dates:
    Est-ce que cette expression est la bonne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (preg_match('/Next Business Day.*?(\d{2}\/\d{2}\/\d{4}).*?(\d{2}\/\d{2}\/\d{4})/i', $line, $matchdate,PREG_OFFSET_CAPTURE)) {
    Merci d'avance sur vos lumieres, car la doc php sur ca n'est pas hyper explicite...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 28
    Par défaut
    La première réponse : non.
    Ton preg_match va retourner vrai pour toutes les lignes CONTENANT "System Type:". Elle va renfermer dans "$match" le contenu de la ligne, moins ce qu'il y a avant éventuellement.

    Si tu veux chopper toutes les lignes commençant réellement par "System Type:", teste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $var[] = "System Type: ok";
    $var[] = "System Tgype: pas ok";
    $var[] = "  System Type: pas ok";
     
    for($i=0; $i<count($var); $i++)
    {
    	if(preg_match('/^System type:.*/i', $var[$i], $match)) {
    		echo $var[$i]."<br />";
    	}	
    }

    Pour la date, peux-tu nous montrer ce que tu as en entrée ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Merci pour ta reponse!
    Ton code avec un vardump de $match me donne ca:
    System Type: ok
    array(1) { [0]=> string(15) "System Type: ok" }

    Pour la date j'utilise ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		if (preg_match('/Next Business Day.*?(\d{2}\/\d{2}\/\d{4}).*?(\d{2}\/\d{2}\/\d{4})/i', $line, $matchdate,PREG_OFFSET_CAPTURE)) {
    		//var_dump($matchdate);
    		//echo '<br>';
    			$outputdata ["Warranty"]= codeDate($matchdate[2][0]);
    			}		
    			else 
    		if (preg_match('/NBD ProSupport For.*?(\d{2}\/\d{2}\/\d{4}).*?(\d{2}\/\d{2}\/\d{4})/i', $line, $matchdate,PREG_OFFSET_CAPTURE)) {
    		//var_dump($matchdate);
    		//echo '<br>';
    			$outputdata ["Warranty"]= codeDate($matchdate[2][0]);
    			}

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    et ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			$FILE = fopen($url, 'r');
    			while ($line = fread($FILE, 1024)) {
    				if(preg_match('/System Type:.*/i', $line, $match)) {
    										var_dump($match);
    				}	
    			}
    m'affiche ca:
    array(1) { [0]=> string(50) "System Type:<td class="gridCellAlt" valign="t" }

    ou est le reste de la ligne???

Discussions similaires

  1. [RegExp] utilisation des expressions regulieres
    Par Byron_1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/05/2013, 13h33
  2. utilisation des expressions regulieres
    Par pthenot dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2012, 23h12
  3. [SimpleXML] Est-il possible d'utiliser des expressions XPATH 2.0 avec simplexml ?
    Par ANISSS dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/11/2006, 09h14
  4. Réponses: 5
    Dernier message: 20/09/2006, 13h16
  5. Problèmes des expressions régulières
    Par melmouj dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 07/07/2006, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo