Home » HTML » HTML_Template_IT » Bug #4392
truncate $[0-99] in the Variable?!
Details
| Submitted | 2005-05-20 10:10 UTC |
|---|---|
| From | fivebull at 163 dot com |
| Assigned | pajoye |
| Status | Bogus |
| Package | HTML_Template_IT |
| PHP Version | 4.3.11 |
| OS | LINUX/XP |
| Roadmaps | (Not assigned) |
Comments
[2005-05-20 10:10 UTC] fivebull at 163 dot com
Description:
------------
$[0-99] in the Variable(String) will be truncated after parse!
Reproduce code:
---------------
require_once("HTML/Template/ITX.php");
$tpl = new HTML_Template_ITX();
$tpl -> setTemplate('{TEST}');
$tpl -> setVariable('TEST', '$1, $2, $3, $i, test');
echo $tpl -> get();
Expected result:
----------------
$1, $2, $3, $i, test
Actual result:
--------------
, , , $i, test
[2005-06-21 16:02 UTC] abaqueiro at yahoo dot com
A fast fix can be escaping all the $ in the value.
in HTML/Template/IT.php
replace the function setVariable
with:
function setVariable($variable, $value = "") {
if (is_array($variable)) {
foreach(array_keys($variable) as $key){
$variable[$key] = str_replace('$','\$',$variable[$key]);
}
$this->variableCache = array_merge(
$this->variableCache, $variable
);
} else {
$value = str_replace('$','\$', $value);
$this->variableCache[$variable] = $value;
}
} // end func setVariable
[2005-06-21 18:57 UTC] pierre at dotgeek dot org
Thank you for taking the time to write to us, but this is not
a bug.
set the options preserve_data and use_preg to false. Your problem will then be solved.
--Pierre