begin process at 2012 02 15 09:59:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

preg_match_all comment faire ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

preg_match_all comment faire ?

samedi 21 avril 2007 à 15:28:10 | preg_match_all comment faire ?

Steph115

Membre Club
Bonjour,

Je ne suis pas très a l'aise dans les preg_match_all et je bloque un peu sur cette idée :

J'ai une chaîne définit comme cela :

!view_client:*,view_client:view_all,client:*,!client:acl,!client:domaine,!commercial:*,member:*,view_client:toto

J'aimerais a partir de cette chaîne obtenir un tableau de cette forme la

$tab = array("view_all", "toto");

Explication :

Il faut prendre ce qu'il se trouve après "view_client:" mais pas si un "!" est devant


Si quelqu'un aurait une idée de la requète preg_match ou avec une autre solution je l'écoute attentivement.


Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
samedi 21 avril 2007 à 19:20:32 | Re : preg_match_all comment faire ?

DiGhan

Salut,

alors à première vue, je vois 2 solutions:

1) la 1ere consiste à exploser la chaine à l'aide de plusieurs explode() consécutifs, le 1er pour séparer chaque séquence 'xxx:yyy' et le 2eme pour séparer chaque donnée 'xxx yyy'. Enfin, il faut tester si le 1er caractère de la donnée x est un ! et si la donnée x = client_view.

2) l'utilisation des regex. Comparé à la première méthode, celle-ci demande un peu plus de réflexion ,notamment, pour la recherche du masque de filtrage (pattern).

Dans tous les cas, c'est la solution qui s'execute le plus vite qu'il faut privilégier. A toi de voir laquelle est la plus rapide.

Malgré tout, voici un exemple implémentant la solution regex. Petit hic, la dernière donnée doit absolument se terminer par une virgule.

<?php
  $key = 0;
  $result = array();
  
  $str2parse = '!view_client:*,view_client:view_all,client:*,!client:acl,!client:domaine,!commercial:*,member:*,view_client:toto,';
  $pattern = '#(!?)(view_client):(.+?),#i';
  preg_match_all($pattern,$str2parse,$matches,PREG_SET_ORDER);
  
  $count = count($matches);
  for ($i=0; $i<$count; $i++)
  {
    if ($matches[$i][1] != '!')
{
  $result[$key][ $matches[$i][2] ] = $matches[$i][3];
  $key++;
}
  }
  echo '<pre>',print_r($result),'</pre>';
?>


Cette discussion est classée dans : client, preg, view, match, all


Répondre à ce message

Sujets en rapport avec ce message

Problème avec preg_match_all [ par Bountard ] Salut à tous, j'ai un petit problème avec l'utilisation de preg_match_all. Pour faire plus simple voila mon bout de code d'essai :   $html = ' un Preg_match_all , soucis d'utilisation [ par Bountard ] Bonjour à tous, j'ai un problème depuis quelques jours avec preg_match_all. Voila mon code : $html = ' un deux un bis preg_match_all tous les caractères [ par mike1310 ] Bonjour à tous,j'ai encore un problème avec ce satané preg_match_all ... J'ai une chaine de caractère comme ceci :blablablabalbal du texte et encore d preg_match_all [ par shefiu ] Bonjour,Je voulais utiliser un preg_match_all pour recuperer tous les liens sur une page web. Ensuite j'affiche le resultat et je me rend compte que q Problème avec preg_match_all [ par nisaloncaje ] BonjourJe comptais utiliser la fonction preg_match_all afin d'extraire d'une chaine caractère les sous chaines contenues entre 2 balises ([yt] et  [/y preg_match_all [ par Kloyd ] Bonjour j'aimerais recuperer à l'aide d'un Preg match all hors du code ci-dessous: [code=html] <img preg_match_all avec bracket [ ] [ par lord1366 ] Bonjour, j'ai besoin d'extraire la partie de texte contenu dans un texte similaire à ceci : Cher [Prénom] [NomDeFamille] , Nous vous invitons au séj preg_match, problème difficilement compréhensible [ par sailsee ] Bonjour, Je travaille sur le contrôle d'un formulaire. J'ai deux variables à vérifier avec une expression regulière $ip et $mail, une ip et un mail. syntaxe preg_match [ par boakim ] Bonjour. J'essaie de comprendre la manière d'écrire des conditions pour une chaîne de caractères du style #^http:\/\/(.*)\.(gif|png|jpg)$#i dans pr boucle for [ par nbpro ] voila g un problème j'ouvre un dossier qui contiens des .txt ouvre et lit les .txt en récupère des données. Des requête s'exécute dans une boucle j'


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,012 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales