Expression Régulière + Tableaux

Coutcout86 Messages postés 219 Statut Membre -  
Coutcout86 Messages postés 219 Statut Membre -
Bonjour,

Voila j'ai créé un tableau comme ceci :

Array(

[typFoldPermRef] => 1
[dirParent] =>
[dirPermID] => 1703
[nameDirPerm] => Nom
[read__EVERYBODY] => 1
[read__PERMANENTS] => 1
[write__PERMANENTS] => 1
[write__ENSMA_PERSONNEL] => 1
[affichageBoutons] => Array
(
[boutonValider] => Valider
)

)

Et j'aimerais dissocié pour les index (ou clés) contenant "read__EVERYBODY" ou "write__PERMANENTS" par exemple, les mots "read" et "EVERYBODY". Donc pour cela j'ai utilisé une expression régulière qui passe dans chaque index de mon tableau. Voici mon code :

foreach($formValues as $key=>$champForm)
{

if(preg_match("!(^read)(__*)(\\D{0,})!", $key, $result1));
{
$test2 = $result1[1]."-".$result1[3];
}
}
die(base::pr($test2));

Le problème c'est qu'il ne m'affiche rien (a part le petit tiret) donc je ne comprend pas pourtant mon expression régulière est bonne je l'ai testé pouvez-vous m'aider ??

Merci d'avance
Romain.
A voir également:

2 réponses

ktm620enduro Messages postés 377 Statut Membre 38
 
l'expression régulière n'est pas utile dans ton cas ...
<? 
foreach($formValues as $key=>$champForm) 
{ 
if ($champForm='write__PERMANENTS' or $champForm='read__PERMANENTS') 
$test2 = $result1[1]."-".$result1[3]; 
} 
die(base::pr($test2));  
?>

Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
0
Coutcout86 Messages postés 219 Statut Membre
 
oki mais alors comment je fais pour séparer write et PERMANENTS ? car cette action je dois la réaliser pour chaque index contenant write ou read suivi d'un nom de groupe donc il faut bien que je parse tout les index du tableau ? et faire une regex sur les index concernés ?

Merci d'avance
Romain
0
ktm620enduro Messages postés 377 Statut Membre 38
 
if ($champForm=='write__PERMANENTS')
retourne true si le champ existe ou false si il n'existe pas, de cette facon tu peux vérifier leur existence et les traiter

sinon

<?php 

function multi_array_key_exists($search, $tableau) { 
      foreach ($tableau as $key=>$value) { 
        if ($search===$key) { 
          return $key; 
        } 
        if (is_array($value)) { 
          if(multi_array_key_exists($search, $value)) { 
            return $key . ":" . multi_array_key_exists($search, $value); 
          } 
        } 
      } 
  return false; 
} 
?>

retourne une clé si elle existe dans un tableau multidimentionnel ou false si elle n'existe pas
0
ktm620enduro Messages postés 377 Statut Membre 38
 
je comprend pas montre une représentation de ton tableau
0
Coutcout86 Messages postés 219 Statut Membre
 
enfaite c'est bon j'y suis arrivé c'est juste que le résultat de mon foreach devait être mis dans un tableau vide déclaré avant ce foreach.

Merci quand même
Romain
0