Bonsoir, j'ai un soucis... enfin vous vous en doutez surement.

Je voudrais dans une variable contenant un "contenu" remplacer touts les

"<!--ICI OBJETLUGIN=1 -->" par un include.

exemple : remplacer <!--ICI OBJETLUGIN=1 --> par include('plugin/inscription/inscription.php');

Voici le code que j'ai fais... mais il ne semble pas marcher, quelqu'un aurait une solution plus simple que la mienne ?

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
/*GESTION DES OBJETS*/
 
//si PLUGIN=4 ALORS $e[0] => PLUGIN et $e[1] => id du plugin dans bdd
  public function getIdAndTypeObjet($objet)
  {
    $e = explode("=",$objet);
    return $e;
  }
 
//$this->balises['objet'][0] c'est <!--ICI OBJET: et $this->balises['objet'][1] c'est -->
  public function getObjetsDansContenu($contenu)
  {
    $nbOccurences = preg_match_all('#'.$this->balises['objet'][0].'(.*)'.$this->balises['objet'][1].'#Uis', $contenu, $m); 
    if ($nbOccurences > 0) 
    {  
      for ($i = 0; $i < $nbOccurences; $i++)
      {
        $obj = $this->getIdAndTypeObjet($m[1][$i]);
        $this->objets[] = $obj[1];//mets dans le tableau objet, l'ID de l'objet
      }      
      return $this->objets;
    }
    else
      return false;
  }
 
  public function parseObjets($contenu, DB $DB)
  {
    $objetArray = $this->getObjetsDansContenu($contenu);
 
    $i = 0;
    while ($i < count($objetArray))
    {
      $this->objetInfos = $DB->getInfosObjet($objetArray[$i]);//recupere les infos en bdd de l'objets
 
      if($this->objetInfos['TypeObjet_Id'] == 1)//c'est un plugin
      {
        $replace = "include_once('".$this->objetInfos[0]['Objets_Parametre'].";')";
        $contenu = str_replace('#'.$this->balises['objet'][0].'PLUGIN='.$objetArray[$i].$this->balises['objet'][1].'#Uis',$replace,$contenu); 
      }
 
 
      $i++;
    }
 
    return $contenu;
  }
voilà mon code de test (je ne mets pas les instanciations de classe et tout le tralala
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
 
//les variables
$langue = $Moteur->returnLangue($User);
 
//DEBUT
 
$article = $Moteur->getArticle('4', $langue, $DB);
 
$test = $Moteur->getObjetsDansContenu($article['ArticleAvoirLangue_Contenu']);
 
$content = $Moteur->parseObjets($article['ArticleAvoirLangue_Contenu'],$DB);
//$article['ArticleAvoirLangue_Contenu'] => dans la bdd = <!--ICI OBJET:PLUGIN=1--> test blabla <!--ICI OBJET:IMAGE=2-->
 
echo $content;
 
 
print_r($test);
 
//FIN
Voilà le rendu (code source html)

<!--ICI OBJETLUGIN=1--> test blabla <!--ICI OBJET:IMAGE=2-->Array
(
[0] => 1
[1] => 2
)

Merci de votre aide