IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Trouver des balises HTML img avec les regex dans un texte HTML


Sujet :

ASP.NET

  1. #21
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    J'avais fait un truc dans le genre ya qqs temps.
    J'ai pas lu attentivement le topic donc je ne sais pas si ton besoin est exactement le même
    Mais voilà mon code

    Je récupère le code html rendu dans htmlRender et j'appelle la méthode ReplaceImgSrc avec htmlRender en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    private void ReplaceImgSrc(string content)
            {
                string pattern = "<img\\s+[^>]*?src\\s*=\\s*(?:(?:\"(?<url>[^\"]*)\")|(?<url>[^>]*))";
                var r = new Regex(pattern, (RegexOptions.IgnoreCase | RegexOptions.Compiled));
                MatchCollection results;
                results = r.Matches(content);
                foreach (Match mat in results)
                {
                    Group g = mat.Groups[1];
                    CaptureCollection cc = g.Captures;
                    foreach (Capture c in cc)
                    {
                        ParseSrc(c.Value);
                    }
                }
            }
    
    private void ParseSrc(string value)
            {
                if (value.Contains("TempImages"))
                {
                    htmlRender = htmlRender.Replace(value, string.Format("http://{0}{1}", HttpContext.Current.Server.MachineName.ToLower(), value));
                }
     
            }

  2. #22
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    J'ai trouvé comment faire.

    1) J'ai nommé 3 groupes dans le pattern de mon regex :
    - le 1er groupe correspond à ce qu'il y a avant le contenu de ma balise src.
    ex : <img alt="" src="
    - le 2ème groupe correspond au contenu de la balise src.
    ex : http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/envelope.gif
    - le 3ème groupe correspond à ce qu'il y a après la contenu de la balise src.
    ex : " />

    2) Il faut utiliser cette surcharge de la fonction Replace :
    Regex.Replace (String, MatchEvaluator)




    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    string pattern = "(?<beforeSrcContent><img([a-zA-Z0-9_.:\\/ =\"[\\]-]*)src=\")(?<srcContent>[a-zA-Z0-9_.:\\/ =\"[\\]-]*)(?<afterSrcContent>\"([a-zA-Z0-9_.:\\/ =\"[\\]-]*) />)";
                    string input = "bla bla ....";
                    Regex a_regex = new Regex(pattern);
                    input = a_regex.Replace(input, new MatchEvaluator(this.ReplaceSrcAttributeContent));


    Le code de la fonction déléguée :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public string ReplaceSrcAttributeContent(Match m)
        {
            string before = m.Groups["beforeSrcContent"].Value;
            string contentAttributeSrc = m.Groups["srcContent"].Value;
            string after = m.Groups["afterSrcContent"].Value;
            string nameFile = contentAttributeSrc.Split('/').Last();
            string contentAttributeSrcReplacement = "|ExplImgPath|" + nameFile;
            return before + contentAttributeSrcReplacement + after;
        }

  3. #23
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Oulala non, c'est un bazooka pour tuer une mouche! (Et en plus ta regex est fausse, si src n'est pas le dernier attribut de image, ca plante)
    Regarde mon premier message! J'avais précisé un truc comme ceci:
    Ben pour ton cas c'est exactement la même chose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var pattern = @"(?<beforeSrcContent><img[a-zA-Z0-9_.:\/ =""[\]-]*src="")(?<srcContentPath>[a-zA-Z0-9_.:\/ =[\]-]*/)(?<srcContentFile>[a-zA-Z0-9_.:\/ =[\]-]*)(?<afterSrcContent>""[a-zA-Z0-9_.:\/ =""[\]-]*/>)";
    var input = @"<img alt="""" src=""http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/envelope.gif"" bla="""" />";
    var replacement = @"${beforeSrcContent}http://monserveuramoi/monadresse/${srcContentFile}${afterSrcContent}";
    var output = Regex.Replace(input, pattern, replacement);

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XHTML 1.0] Balise img avec les attributs class ou id
    Par Touty11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 23/04/2012, 11h53
  2. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  3. [RegEx] Extraction des mot dans un paragraph avec les REGEX
    Par geforce dans le forum Langage
    Réponses: 0
    Dernier message: 29/03/2010, 18h58
  4. [HTML] Problème avec les options de la balise <p>
    Par Balflear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 22/06/2006, 10h48
  5. Position des balises H2 ou comment les numéroter
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/07/2003, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo