[Regex] Problème récup variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Regex] Problème récup variable

par Invité » 30 nov. 2008, 17:36

Non, j'ai dût sous-estimer PHP, si ça marche, tant mieux
tu n'as pas choisi l'expérience :)
c'est bon de rêver aussi ... :wink:

par katagoto » 30 nov. 2008, 15:47

Non, j'ai dût sous-estimer PHP, si ça marche, tant mieux,

ta question est résolue ?

par Invité » 30 nov. 2008, 13:57

C'est ça que je voulais dire...
ok, je n'avais pas compris ça ...
Tu va avoir ça dans ton (x)html :
mon texte avec @$_POST['ma_variable'] et @$_POST['mon_autre_variable'] pour le test
ça sera pas interprêter...
chez moi j'ai bien :
mon texte avec le_contenu_de_ma_variable et le_contenu_de_mon_autre_variable pour le test
il est vrai que je teste avec PHP 4.3.10 :oops:
est-ce lié à la version ?

par katagoto » 30 nov. 2008, 13:27

Le problème de cette :
<?php 
$_POST['ma_variable']        = 'le_contenu_de_ma_variable'; 
$_POST['mon_autre_variable'] = 'le_contenu_de_mon_autre_variable'; 

$txt = 'mon texte avec {.ma_variable.} et {.mon_autre_variable.} pour le test'; 

$txt = preg_replace('/\{\.(.+)\.\}/Ue', '@$_POST["$1"]', $txt); 

echo $txt; 

?> 
solution...

Tu va avoir ça dans ton (x)html :
mon texte avec @$_POST['ma_variable'] et @$_POST['mon_autre_variable'] pour le test
ça sera pas interprêter...

C'est ça que je voulais dire...

par Invité » 30 nov. 2008, 12:15

... le problème de cette solution ...
parlant de ta solution, tu voulais sans doute dire "l'avantage" :)

ta solution est de toute façon plus rapide :wink:

par katagoto » 30 nov. 2008, 10:55

Bonjour,

Oui désolé, mais avec ZDE on prend vite l'habitude de ne faire que modéliser :lol:

Si non, le problème de cette solution, c'est que ça va juste remplacer par un "appel", sans l'exécuter, et de plus, en développement, le masquage des erreurs est peu recommander :/

par Invité » 29 nov. 2008, 21:38

katagoto, il manque une parenthèse fermante sur cette ligne :
if(isset($_POST[$matches[1]]))
( et ça marche :) )

une autre solution du même genre :
<?php
$_POST['ma_variable']        = 'le_contenu_de_ma_variable';
$_POST['mon_autre_variable'] = 'le_contenu_de_mon_autre_variable';

$txt = 'mon texte avec {.ma_variable.} et {.mon_autre_variable.} pour le test';

$txt = preg_replace('/\{\.(.+)\.\}/Ue', '@$_POST["$1"]', $txt);

echo $txt;

?>

par katagoto » 29 nov. 2008, 12:58

Bonjour,

pourrais-tu nous montrer ton code, personnellement, j'aurais tenté un preg_replace_callback :
function cherche_variable($matches)
{
   if(isset($_POST[$matches[1]])
   {
      return $_POST[$matches[1]];
   }
   else
   {
       return '';
   }
}

// le regex
preg_replace_callback('#\{\.([a-zA-Z0-9_\-]+)\.\}#', 'cherche_variable', $buffer);
En gros je teste l'existence de la variable et je la renvoie si elle éxiste (dans ma fonction). Le REGEX, quand à lui, appèle la fonction à chaque "hit"

[Regex] Problème récup variable

par shelko » 28 nov. 2008, 23:12

Bonjour,
J'essaie depuis un certain temps de trouver une solution à mon problème, mais pas moyen de trouver la syntaxe qui correspond.
Mon script récupère le contenu d'une page texte et le met dans un buffer. Dans ce contenu je cherche des "variable" qui ont la forme {.ma_variable.} de façon à pouvoir la remplacer par $_POST['ma_variable'] dans le buffer que je ré-affiche (en gros c'est un petit moteur de template).
Donc j'avais pensé a utiliser un preg_replace au début pour changer mon {. en $_POST[' et mon .} en rien du tout mais je n'y arrive pas. Ensuite j'ai utilisé un preg_match_all mais pas moyen de recomposer ma variable en post une fois récupérée du buffer. :cry:

Donc je m'adresse à vous pour avoir un coup de pouce. :roll:
Je vous remercie d'avance.