[spip-dev] [Bug 2.0.9 SVN] Interprétation abusive de parenthèse fermante

Bonjour,

J'essaye de faire ceci :
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/","/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3")})]
Et le code généré vu par var_mode debug est :

// #EVAL
22 interdire_scripts((extraire_tag_from_url("http://www.uneurlsurinternet/","/.*(<form.*>).*/U")) .
23
24 // 1 signes
25 '
26 ');

Alors que
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/","/.*(<form.*>.*/U","$1<div>$2</div>$3")})]
compile correctement :
/ #EVAL
22 interdire_scripts((extraire_tag_from_url("http://www.uneurlsurinternet/","/.*(<form.*>.*/U","$1<div>$2</div>$3"))) .
23
24 // 1 signes
25 '
26 ');

* RealET tapuscrivait, le 14/09/2009 16:55:

Bonjour,

J'essaye de faire ceci :
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\*\(&lt;form\.\*&gt;\)\(\.\*\)\(&lt;\\/form&gt;\)\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)})]

Oups, j'avais oublié de simplifier le code ici aussi :
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\*\(&lt;form\.\*&gt;\)\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)})]

Et le code généré vu par var_mode debug est :

// #EVAL
22 interdire_scripts((extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\.\*\(&lt;form\.\*&gt;\)\.\*/U&quot;\)) ..
23
24 // 1 signes
25 '
26 ');

Alors que
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\*\(&lt;form\.\*&gt;\.\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)\})]

compile correctement :
/ #EVAL
22 interdire_scripts((extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\.\*\(&lt;form\.\*&gt;\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)\)) ..
23
24 // 1 signes
25 '
26 ');

Donc, la seule différence entre le code qui foire et l'autre, c'est :
(<form.*>)
et
(<form.*>

* RealET tapuscrivait, le 14/09/2009 17:02:

* RealET tapuscrivait, le 14/09/2009 16:55:

Bonjour,

J'essaye de faire ceci :
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\*\(&lt;form\.\*&gt;\)\(\.\*\)\(&lt;\\/form&gt;\)\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)})]

J'ai contourné en me créant une balise :
function balise_RECUPERER_PAGE_PORTION($p) {
  if (sizeof($p->param)>0) {
    $url = interprete_argument_balise(1,$p);
    $pattern = interprete_argument_balise(2,$p);
    $replace = interprete_argument_balise(3,$p);
    $p->code = "extraire_tag_from_url($url,$pattern,$replace)";
  }
  $p->interdire_scripts = false;
  return $p;
}

Appelée par :
[(#RECUPERER_PAGE_PORTION{"http://url","/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3"})]

et [(#VAL{url}|extraire_tag_from_url{param2, param3})] ?

RealET a écrit :

[(#RECUPERER_PAGE_PORTION{"http://url","/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3"})]

[hs]
je rajouterais bien un s pour du multi-lignes
et un i pour avoir aussi les <FORM :
   /.*(<form.*>)(.*)(<\/form>).*/iUs

(si j'ai bien compris le but de la manoeuvre...)

Peut être en ajoutant un template tinybutstrong au milieu, ça serait encore plus compliqué ...

sinon tu peux aussi faire (comme en SPIP 1.0 a des nuances pres)
[(#VAL{url}|extraire_tag_from_url{"/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3"})]

non ? ou c'est moi qui ait pas l'esprit assez torturé ?

Cédric

* cedric.morin@yterium.com tapuscrivait, le 14/09/2009 18:42:

* RealET tapuscrivait, le 14/09/2009 17:02:

* RealET tapuscrivait, le 14/09/2009 16:55:

Bonjour,

J'essaye de faire ceci :
[(#EVAL{extraire_tag_from_url("http://www.uneurlsurinternet/&quot;,&quot;/\.\*\(&lt;form\.\*&gt;\)\(\.\*\)\(&lt;\\/form&gt;\)\.\*/U&quot;,&quot;$1&lt;div&gt;$2&lt;/div&gt;$3&quot;\)})]

J'ai contourné en me créant une balise :
....
Appelée par :
[(#RECUPERER_PAGE_PORTION{"http://url","/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3"})]

Peut être en ajoutant un template tinybutstrong au milieu, ça serait encore plus compliqué ...

sinon tu peux aussi faire (comme en SPIP 1.0 a des nuances pres)
[(#VAL{url}|extraire_tag_from_url{"/.*(<form.*>)(.*)(<\/form>).*/U","$1<div>$2</div>$3"})]

non ? ou c'est moi qui ait pas l'esprit assez torturé ?

Joker :stuck_out_tongue:

Bon, je vais la refaire au sujet du bug.
C'est bien de contourner le bug, mais ça ne le supprime pas.

J'ai tenté de faire [(#EVAL{fonction("param1","param2")})]
Et param2 n'est non seulement pas pris en compte, mais en plus provoque une erreur PHP si param1 comporte une parenthèse fermante.

Pour moi, c'est un bug.

Mais c'est sans doute au-delà des possibilités du compilateur de SPIP.

RealET a écrit :

Mais c'est sans doute au-delà des possibilités du compilateur de SPIP.

bon.
alors si
   [(#EVAL{date("Y-m-d (H:i:s)", "1234567890")})]
provoque bien une erreur à la compilation

il n'en va pas de même pour
   [(#EVAL{"date('Y-m-d (H:i:s)', '1234567890')"})]
qui fonctionne farpaitement.

et du coup,

[(#EVAL{"extraire_tag_from_url('http://www.uneurlsurinternet/‹ , ›/.*(&lt;form\.\*&gt;\)\.\*/U&#39;,&#39;$1&lt;div&gt;$2&lt;/div&gt;$3&#39;\)"})]

compile tout aussi farpaitement en :

// #EVAL
interdire_scripts(eval('return '.
// 94 signes
'extraire_tag_from_url(\'http://www.uneurlsurinternet/\\&#39;,\\&#39;/\.\*\(&lt;form\.\*&gt;\)\.\*/U\\&#39;,\\&#39;$1&lt;div&gt;$2&lt;/div&gt;$3\\&#39;\)'.';'))

rhâââââ la la !
ces kotalakon...