mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-17 15:59:06 +01:00
- getFData (Php&JS) : Ajout d'une possibilité de découpage de la valeur de remplacement
This commit is contained in:
parent
d63d161a5e
commit
ba78f51681
2 changed files with 90 additions and 15 deletions
|
@ -39,6 +39,7 @@
|
|||
*/
|
||||
function getFData($format,$data,$meth=NULL) {
|
||||
$unique=false;
|
||||
$expr="%{([A-Za-z0-9]+)(\:(-?[0-9])+)?(\:(-?[0-9])+)?}";
|
||||
if(!is_array($format)) {
|
||||
$format=array($format);
|
||||
$unique=true;
|
||||
|
@ -46,17 +47,42 @@ function getFData($format,$data,$meth=NULL) {
|
|||
for($i=0;$i<count($format);$i++) {
|
||||
if(is_array($data)) {
|
||||
if ($meth==NULL) {
|
||||
while (ereg("%{([A-Za-z0-9]+)}",$format[$i],$ch)) {
|
||||
$format[$i]=ereg_replace($ch[0],$data[$ch[1]],$format[$i]);
|
||||
while (ereg($expr,$format[$i],$ch)) {
|
||||
if($ch[3]) {
|
||||
if ($ch[5]) {
|
||||
$s=$ch[3];
|
||||
$l=$ch[5];
|
||||
}
|
||||
else {
|
||||
$s=0;
|
||||
$l=$ch[3];
|
||||
}
|
||||
$val=substr((string)$data[$ch[1]],$s,$l);
|
||||
}
|
||||
else {
|
||||
$val=$data[$ch[1]];
|
||||
}
|
||||
$format[$i]=ereg_replace($ch[0],$val,$format[$i]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (ereg("%{([A-Za-z0-9]+)}",$format[$i],$ch)) {
|
||||
while (ereg($expr,$format[$i],$ch)) {
|
||||
if (method_exists($data[$ch[1]],$meth)) {
|
||||
$value = $data[$ch[1]] -> $meth();
|
||||
if (is_array($value)) {
|
||||
$value = $value[0];
|
||||
}
|
||||
if($ch[3]) {
|
||||
if ($ch[5]) {
|
||||
$s=$ch[3];
|
||||
$l=$ch[5];
|
||||
}
|
||||
else {
|
||||
$s=0;
|
||||
$l=$ch[3];
|
||||
}
|
||||
$value=substr((string)$value,$s,$l);
|
||||
}
|
||||
$format[$i]=ereg_replace($ch[0],$value,$format[$i]);
|
||||
}
|
||||
else {
|
||||
|
@ -68,16 +94,42 @@ function getFData($format,$data,$meth=NULL) {
|
|||
}
|
||||
else {
|
||||
if ($meth==NULL) {
|
||||
while (ereg("%{([A-Za-z0-9]+)}",$format[$i],$ch))
|
||||
$format[$i]=ereg_replace($ch[0],$data,$format[$i]);
|
||||
while (ereg($expr,$format[$i],$ch)) {
|
||||
if($ch[3]) {
|
||||
if ($ch[5]) {
|
||||
$s=$ch[3];
|
||||
$l=$ch[5];
|
||||
}
|
||||
else {
|
||||
$s=0;
|
||||
$l=$ch[3];
|
||||
}
|
||||
$val=substr((string)$data,$s,$l);
|
||||
}
|
||||
else {
|
||||
$val=$data;
|
||||
}
|
||||
$format[$i]=ereg_replace($ch[0],$val,$format[$i]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (ereg("%{([A-Za-z0-9]+)}",$format[$i],$ch)) {
|
||||
while (ereg($expr,$format[$i],$ch)) {
|
||||
if (method_exists($data,$meth)) {
|
||||
$value = $data -> $meth($ch[1]);
|
||||
if (is_array($value)) {
|
||||
$value = $value[0];
|
||||
}
|
||||
if($ch[3]) {
|
||||
if ($ch[5]) {
|
||||
$s=$ch[3];
|
||||
$l=$ch[5];
|
||||
}
|
||||
else {
|
||||
$s=0;
|
||||
$l=$ch[3];
|
||||
}
|
||||
$value=substr((string)$value,$s,$l);
|
||||
}
|
||||
$format[$i]=ereg_replace($ch[0],$value,$format[$i]);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -34,17 +34,29 @@ function LSdebug() {
|
|||
* @retval string La chaine formatée
|
||||
*/
|
||||
function getFData(format,data,meth) {
|
||||
var getMotif = new RegExp('%\{([A-Za-z0-9]+)\}');
|
||||
var getMotif = new RegExp('%\{(([A-Za-z0-9]+)(\:(-?[0-9])+)?(\:(-?[0-9])+)?)\}');
|
||||
var find=1;
|
||||
var val="";
|
||||
if(($type(data)=='object') || ($type(data)=='array')) {
|
||||
if ($type(data[meth])!='function') {
|
||||
while (find) {
|
||||
var ch = getMotif.exec(format);
|
||||
if ($type(ch)) {
|
||||
format=format.replace (
|
||||
new RegExp('%\{'+ch[1]+'\}'),
|
||||
data[ch[1]]
|
||||
);
|
||||
if($type(ch[4])) {
|
||||
if ($type(ch[6])) {
|
||||
var s=ch[4];
|
||||
var l=ch[6];
|
||||
}
|
||||
else {
|
||||
var s=0;
|
||||
var l=ch[4];
|
||||
}
|
||||
var val=data[ch[2]].substr(s,l);
|
||||
}
|
||||
else {
|
||||
val=data[ch[2]];
|
||||
}
|
||||
format=format.replace(new RegExp('%\{'+ch[1]+'\}'),val);
|
||||
}
|
||||
else {
|
||||
find=0;
|
||||
|
@ -56,14 +68,25 @@ function getFData(format,data,meth) {
|
|||
var ch = getMotif.exec(format);
|
||||
if ($type(ch)) {
|
||||
try {
|
||||
format=format.replace (
|
||||
new RegExp('%\{'+ch[1]+'\}'),
|
||||
data[meth](ch[1])
|
||||
);
|
||||
val=data[meth](ch[2]);
|
||||
}
|
||||
catch(e) {
|
||||
return;
|
||||
}
|
||||
|
||||
if($type(ch[4])) {
|
||||
if ($type(ch[6])) {
|
||||
var s=ch[4];
|
||||
var l=ch[6];
|
||||
}
|
||||
else {
|
||||
var s=0;
|
||||
var l=ch[4];
|
||||
}
|
||||
val=val.substr(s,l);
|
||||
}
|
||||
|
||||
format=format.replace(new RegExp('%\{'+ch[1]+'\}'),val);
|
||||
}
|
||||
else {
|
||||
find=0;
|
||||
|
|
Loading…
Reference in a new issue