- preg_replace_callback: documentation ( source)
- preg_match: documentation ( source)
- var_export: documentation ( source)
- str_replace: documentation ( source)
- strtolower: documentation ( source)
<?php
function dumpParameter($r){
return 'PAR'.$r.'AM';
}
function t($value){
if (preg_match('/^%([^%]+)%$/', $value, $match)) {
// we do this to deal with non string values (Boolean, integer, ...)
// the preg_replace_callback converts them to strings
return dumpParameter(strtolower($match[1]));
} else {
$replaceParameters = function ($match){
return "'.".dumpParameter(strtolower($match[2])).".'";
};
$code = str_replace('%%', '%', preg_replace_callback('/(?<!%)(%)([^%]+)\1/', $replaceParameters, var_export($value, true)));
return $code;
}
}
t('%ddd%dre');