Skip to content
Extraits de code Groupes Projets
Valider 49d0a0e4 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

8459 etait 10% plus rapide que 8460, donc retour en arriere

parent 432ac640
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -1189,30 +1189,28 @@ function extraire_tag($texte, $tag) { ...@@ -1189,30 +1189,28 @@ function extraire_tag($texte, $tag) {
// ($complet demande de retourner $r) // ($complet demande de retourner $r)
// http://doc.spip.org/@extraire_attribut // http://doc.spip.org/@extraire_attribut
function extraire_attribut($balise, $attribut, $complet = false) { function extraire_attribut($balise, $attribut, $complet = false) {
$value = NULL; if (preg_match(
$attribut = strtolower($attribut); // ',(.*?<[^>]*)(\s'.$attribut.'=\s*([\'"]?)([^\\3]*?)\\3)([^>]*>.*),isS',
// on ne prend que la premiere balise qui se presente ',(.*?<(?:\s*+\w++(?:=(?:"[^"]*"|\'[^\']*\'|[^\'"]\S*))?)*?)(\s+'.$attribut.'(?:=\s*("[^"]*"|\'[^\']*\'|[^\'"]\S*))?)()([^>]*>.*),isS',
if (!preg_match("{<([a-z]*)([^>]*?)>}is",$balise,$regs)) $balise, $r)) {
return $value; if ($r[3][0] == '"' || $r[3][0] == "'") {
$tagname = $regs[1]; $r[4] = substr($r[3], 1, -1);
$balise = $regs[2]; $r[3] = $r[3][0];
} elseif ($r[3]) {
// 3 types d'attributs : valeur sans guillemets, entre guillemets ou quote, ou autodefinis (sans valeur) $r[4] = $r[3];
preg_match_all(',(([a-z]+)((\s*=\s*([^\s\'"]+))|(\s*=\s*([\'"]?)([^\\7]*?)\\7)|\s)),isS',$balise,$regs,PREG_SET_ORDER); $r[3] = '';
} else {
foreach($regs as $reg){ $r[4] = trim($r[2]);
if ($attribut==strtolower($reg[2])){
$value = $reg[2];
$att_complet = $reg[0];
if (count($reg)>4) // ca n'est pas une entite auto definie
$value = filtrer_entites(str_replace("&#39;", "'", end($reg)));
break;
} }
$att = filtrer_entites(str_replace("&#39;", "'", $r[4]));
} }
else
$att = NULL;
if ($complet) if ($complet)
return array($value, $att_complet); return array($att, $r);
else else
return $value; return $att;
} }
// modifier (ou inserer) un attribut html dans une balise // modifier (ou inserer) un attribut html dans une balise
...@@ -1228,11 +1226,11 @@ function inserer_attribut($balise, $attribut, $val, $texte_backend=true, $vider= ...@@ -1228,11 +1226,11 @@ function inserer_attribut($balise, $attribut, $val, $texte_backend=true, $vider=
else else
$insert = " $attribut='$val' "; $insert = " $attribut='$val' ";
list($old, $att_complet) = extraire_attribut($balise, $attribut, true); list($old, $r) = extraire_attribut($balise, $attribut, true);
if ($old !== NULL) { if ($old !== NULL) {
// Remplacer l'ancien attribut du meme nom // Remplacer l'ancien attribut du meme nom
$balise = str_replace($att_complet,$insert,$balise); $balise = $r[1].$insert.$r[5];
} }
else { else {
// preferer une balise " />" (comme <img />) // preferer une balise " />" (comme <img />)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter