Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : preg_match_all comment faire ? [ Divers / Général ] (Steph115)

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é 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 [ 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 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 problème preg_match ou autre [ par mike1310 ] Bonjour à tous,je suis en train de me créer un moteur de template simple et j'aimerais faire, à l'aide d'un preg_match ou autre, récupérer dans ma pag Variable qui contient que des lettres [ par Noizet ] Hello,J'ai besoin d'une méthode qui permet de vérifier si ma variable contient que des lettres, j'ai écrit ceci :if(preg_match('/^[a-z]$/',$valeur)) { programme avec preg_match [ par lassad_haddaji ] bonjour, merci de m'aider une autre fois prendant cette semaine, jai un probleme avec preg_match, jai pas pu composé cette chaine exemple: 48°26'58.11 preg_match [ par Teclis01 ] Bonsoir,Je voulais parser un fichier html et faire une signature dynamique enfonction de ce que je souhaite récuperer. Néanmoins j'ai un petit soucis syntaxe des masques de preg_match() - probléme de nouvelle ligne [ par Mastronic ] Bonjour, j'ai cette fonction preg_match('/'.$t1.'(.*)'.$t2.'/',$source,$resultat) qui fonctionne tres bien sauf si  il y a un retour à la ligne entr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.