Skip to content
Extraits de code Groupes Projets
Valider 67caaa9d rédigé par Fil's avatar Fil
Parcourir les fichiers

ereg(.*) a tendance à faire des erreurs mémoire (résoud le bug d'erreur 500...

ereg(.*) a tendance à faire des erreurs mémoire (résoud le bug d'erreur 500 sur la css de l'espace privé, et accélère grandement sa compilation, comme des autres squelettes)

par ailleurs petit bug sur la détection du charset des squelettes (puisqu'on prenait #CHARSET :)
parent 7b6c27d7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -572,7 +572,8 @@ function transcoder_page($texte, $headers='') { ...@@ -572,7 +572,8 @@ function transcoder_page($texte, $headers='') {
// charset precise par le contenu (html) // charset precise par le contenu (html)
else if (preg_match( else if (preg_match(
',<(meta|html|body)[^>]*charset[^>]*=[^>]*([-_a-z0-9]+?),Uims', ',<(meta|html|body)[^>]*charset[^>]*=[^>]*([-_a-z0-9]+?),Uims',
$texte, $regs)) $texte, $regs)
AND !preg_match(',^charset$,i', $charset)) # eviter #CHARSET des squelettes
$charset = trim(strtolower($regs[2])); $charset = trim(strtolower($regs[2]));
// charset de la reponse http // charset de la reponse http
else if (preg_match(',charset=([-_a-z0-9]+),i', $headers, $regs)) else if (preg_match(',charset=([-_a-z0-9]+),i', $headers, $regs))
......
...@@ -292,51 +292,67 @@ function phraser_arg(&$texte, $fin, $sep, $result, &$pointeur_champ) { ...@@ -292,51 +292,67 @@ function phraser_arg(&$texte, $fin, $sep, $result, &$pointeur_champ) {
function phraser_champs_exterieurs($texte, $ligne, $sep, $nested) { function phraser_champs_exterieurs($texte, $ligne, $sep, $nested) {
$res = array(); $res = array();
while (($p=strpos($texte, "%$sep"))!==false) { while (($p=strpos($texte, "%$sep"))!==false) {
if (!ereg("^%$sep([0-9]+)@(.*)$", substr($texte,$p),$m)) break; if (!preg_match(',^%'.preg_quote($sep).'([0-9]+)@,', substr($texte,$p), $m))
$debut = substr($texte,0,$p); break;
if ($p) $res = phraser_inclure($debut, $ligne, $res); $debut = substr($texte,0,$p);
$ligne += substr_count($debut, "\n"); $texte = substr($texte, $p+strlen($m[0]));
$res[]= $nested[$m[1]]; if ($p)
$texte = $m[2]; $res = phraser_inclure($debut, $ligne, $res);
$ligne += substr_count($debut, "\n");
$res[]= $nested[$m[1]];
} }
return (($texte==="") ? $res : phraser_inclure($texte, $ligne, $res)); return (($texte==='') ? $res : phraser_inclure($texte, $ligne, $res));
} }
function phraser_champs_interieurs($texte, $ligne, $sep, $result) { function phraser_champs_interieurs($texte, $ligne, $sep, $result) {
$i = 0; // en fait count($result) $i = 0; // en fait count($result)
$x = ""; $x = "";
while (true) { $j=$i; $n = $ligne;
while (ereg(CHAMP_ETENDU, $texte, $match)) { while (true) {
$p = strpos($texte, $match[0]); $j=$i;
$debut = substr($texte, 0, $p); $n = $ligne;
if ($p) {$result[$i] = $debut;$i++; } while (ereg(CHAMP_ETENDU, $texte, $match)) {
$champ = new Champ; $p = strpos($texte, $match[0]);
// ca ne marche pas encore en cas de champ imbrique $debut = substr($texte, 0, $p);
$champ->ligne = $x ? 0 :($n+substr_count($debut, "\n")); if ($p) {
$champ->nom_boucle = $match[3]; $result[$i] = $debut;
$champ->nom_champ = $match[4]; $i++;
$champ->etoile = $match[6]; }
// phraser_args indiquera ou commence apres $champ = new Champ;
$result = phraser_args($match[7], ")", $sep, $result, $champ); // ca ne marche pas encore en cas de champ imbrique
$champ->avant = phraser_champs_exterieurs($match[1],$n,$sep,$result); $champ->ligne = $x ? 0 :($n+substr_count($debut, "\n"));
$debut = substr($champ->apres,1); $champ->nom_boucle = $match[3];
$n += substr_count(substr($texte, 0, strpos($texte, $debut)), "\n"); $champ->nom_champ = $match[4];
$champ->apres = phraser_champs_exterieurs($debut,$n,$sep,$result); $champ->etoile = $match[6];
// phraser_args indiquera ou commence apres
$result[$i] = $champ; $result = phraser_args($match[7], ")", $sep, $result, $champ);
$i++; $champ->avant =
$texte = substr($texte,$p+strlen($match[0])); phraser_champs_exterieurs($match[1],$n,$sep,$result);
} $debut = substr($champ->apres,1);
if ($texte!=="") {$result[$i] = $texte; $i++;} $n += substr_count(substr($texte, 0, strpos($texte, $debut)), "\n");
$x =''; $champ->apres = phraser_champs_exterieurs($debut,$n,$sep,$result);
while($j < $i) $result[$i] = $champ;
{ $z= $result[$j]; $i++;
// j'aurais besoin de connaitre le nombre de lignes... $texte = substr($texte,$p+strlen($match[0]));
if (is_object($z)) $x .= "%$sep$j@" ; else $x.=$z ; }
$j++;} if ($texte!=="") {$result[$i] = $texte; $i++;}
if (ereg(CHAMP_ETENDU, $x)) $texte = $x; $x ='';
else return phraser_champs_exterieurs($x, $ligne, $sep, $result);}
while($j < $i) {
$z= $result[$j];
// j'aurais besoin de connaitre le nombre de lignes...
if (is_object($z))
$x .= "%$sep$j@";
else
$x.=$z;
$j++;
}
if (ereg(CHAMP_ETENDU, $x))
$texte = $x;
else
return phraser_champs_exterieurs($x, $ligne, $sep, $result);
}
} }
// analyse des criteres de boucle, // analyse des criteres de boucle,
...@@ -622,6 +638,7 @@ function phraser($texte, $id_parent, &$boucles, $nom, $ligne=1) { ...@@ -622,6 +638,7 @@ function phraser($texte, $id_parent, &$boucles, $nom, $ligne=1) {
$ligne += substr_count(substr($texte, 0, strpos($texte, $suite)), "\n"); $ligne += substr_count(substr($texte, 0, strpos($texte, $suite)), "\n");
$texte = $suite; $texte = $suite;
} }
return phraser_champs_etendus($texte, $ligne, $all_res); return phraser_champs_etendus($texte, $ligne, $all_res);
} }
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter