begin process at 2012 05 30 20:10:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Modification attribut alt dans un contenu


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modification attribut alt dans un contenu

jeudi 26 novembre 2009 à 17:43:14 | Modification attribut alt dans un contenu

thunderfear

Membre Club
Bonjour,

Je cale un peu pour un module que j'aimerai développer.

J'ai une variable qui contient du code html:

Exemple:
Code PHP :
$content = "<div > blabla </div> <img src="x.jpg" alt="" /> <img src="x.jpg" /> <img alt="description" src="x.jpg" />";


J'aimerai "traiter" l'attribut alt de toutes les images de la variable.

Si l'attribut alt n'existe pas pour une image, je dois le créer.
Si l'attribut alt existe mais vide alors j'aimerai le remplir d'un texte.
Si l'attribut alt est rempli, on ne fais rien.

J'imagine que l'ont doit utiliser plusieurs expressions régulière mais je ne sais pas comment les faire.

Merci à ceux qui me donneront un petit coup de pouce.
vendredi 27 novembre 2009 à 09:09:35 | Re : Modification attribut alt dans un contenu

TychoBrahe

Réponse acceptée !
Salut,

Si tu as du XHTML et non une soupe de balise alors tu peux utiliser les divers bibliothèques de traitement des documents XML, par exemple SimpleXML, afin de parser le contenu de ta chaîne et te donner des moyens de plus haut niveau pour en manipuler le contenu. Voici par exemple une fonction récursive qui te permet de vérifier chaque élément et qui appel une autre fonction sur les éléments img afin de les traiter comme tu le souhaite :

Code PHP :
<?php

function        img_action(SimpleXMLElement &$XmlNode)
{
  foreach ($XmlNode->attributes() as $name => $value)
    {
      if ($name == 'alt' && $value == '')
        {
          $XmlNode['img'] = 'bidule';
          return ;
        }
      elseif ($name == 'alt')
        return ;
    }
  $XmlNode->addAttribute('alt', 'truc');
}

function        edit_img(SimpleXMLElement $XmlNode)
{
  if (sizeof($XmlNode->children()) <= 0)
    return $XmlNode;
  foreach ($XmlNode->children() as $Child)
    {
      if ($Child->getName() == 'img')
        img_action($Child);
      else
        edit_img($Child);
    }
  return $XmlNode;
}

$str = '                                                                        

<div>                                                                           
  <p><img src="lipsum.png" alt="lipsum" />Lorem ipsum dolor sit amet.</p>       
  <img src="toto.png" alt="" />                                                 
  <p>Sed ut perspiciatis unde omnis iste natus error <img src="sed.png" /></p>  
</div>';

$DataXml = new SimpleXMLElement($str, null);
$DataXml = edit_img($DataXml);
echo $DataXml->asXML(), "\n";
vendredi 27 novembre 2009 à 11:31:12 | Re : Modification attribut alt dans un contenu

cyrhades

ou en jquery :
$("img").each( function() { this.attr( { src: "x.jpg", alt: "x texte" } ) } )

En une seule ligne ^^ merci Jquery

Pour l'explication :
// on boucle sur toutes les balise img
$("img").each
// en se basant sur l'attribut ..
this.attr( )
//... sur l'attribut src (nom l'image en faite) on modifie l'attribut alt.
{ src: "x.jpg", alt: "x_texte" }

voila a toi d'adapter x.jpg et x_texte avec un tableau
Exemple :
image = new Array();
image['toto.jpg'] = 'Toto a la plage';
image['tarzan.jpg'] = 'Tarzan et chita ^^';

// peut être a revoir cette partie
$("img").each( function() { this.attr( { src: "x.jpg", alt: image[this.attr("src")] } ) } )
vendredi 27 novembre 2009 à 12:42:03 | Re : Modification attribut alt dans un contenu

TychoBrahe

Salut,

@cyrhades : Je ne crois pas qu'agir sur le DOM soit la bonne solution. Déjà parce que tout le monde n'a pas JavaScript d'activé (bon ok de nos jours ce n'est presque plus le cas), mais surtout parce que le principe même de fournir un document erroné avec un correctif a appliquer me semble assez malsain.
samedi 28 novembre 2009 à 13:09:00 | Re : Modification attribut alt dans un contenu

thunderfear

Membre Club
Sympa le code javascript mais je devait intégrer ca dans un module en php.

Un grand merci à vous 2



Cette discussion est classée dans : alt, code, contenu, modification, attribut


Répondre à ce message

Sujets en rapport avec ce message

code de modification et d'ajout [ par inesfsg ] bonjour : -je veux savoir comment modifier le contenu d'une base de données en modifiant le contenu de balise select. -je veux savoir comment lorsque ecrire un fichier php avec fopen [ par kikifrance ] Salut! Je ne m'en sors pas avec un code. J'aimerais écrire un code qui écrirait une page php avec fopen Je souhaiterais ecrire un truc de ce genre: pete de contenu des variables [ par AZIRIAZIZ ] je suis entrainde concevoir une application web où il est question de verifier l existance du client et lui permettre de faire une commande de produit Récupérer contenu DIV [ par fabienfs ] Bonjour, J'aimerais récupérer tout le contenu HTML se trouvant dans une balise sur un site distant. J'ai donc ce script : [code=php]$url = "h getattribute xml en php [ par jimmyhendrix ] Salut ! J'ai un problème tout simple. J'essaie d'aller chercher un attribut dans un fichier xml à l'aide du php. J'ai trouvé beaucoup de réponse sur modification de données? [ par morgain63 ] bonjour, avec le code ci-dessous je voudrais pouvoir modifier des données entrées pendant l'inscription au site mais bien que le formulaire affiche le Afficher une ligne du contenu d'une table selon son premier champ [ par spacedelta ] Bonjour, J'ai longtemps cherché et je n'ai jamais trouvé. Je recherche le code en php qui permet de lire une ligne du contenu d'une table avec un cham problème de lien et modification [ par msi079 ] salut . j'ai utilisé deux méthodes différentes pour afficher et exécuter un lien afin de faire des modification dans ma base de données . la première


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales