[spip-dev] regex ungreedy et multi

la fonction PHP qui traduit les multis :

8<---------------------------------------------
/**
* @param String $untexte
* @return String un texte propre dans la langue courante
*/
function ma_typo($untexte) {
    $tas = array();
  if (preg_match("/<multi>(.*)<\/multi>/U",$untexte,$tas)) {
    preg_match_all("/\[(\w\w)\](.*)\[|$/U", $tas[1], $_m);
    $pos = array_search($GLOBALS['lang'] , $_m[1]);
    return $_m[2][$pos];
  } else {
    return $tas[1];
  }
}
8<---------------------------------------------

Pour info, preg supporte la fonction ungreedy (pas gourmand en français) qui simplifie beaucoup les expressions regulière, et le code de Spip semble l'ignorer.
Par exemple, pour récuperer ce qu'il y a dans la balise multi, Spip utiliserait :

<multi>([^<]*)</multi>|

Alors qu'il est plus d'utiliser :

<multi>(.*)</multi>|U

Pour les explications, php.net fournit un excellent RTFM

M.