Supprimer des éléments de l'image de la chaîne
J'ai une chaîne qui contient le HTML des éléments de l'image qui est stockée dans une var.
Je veux supprimer les éléments de l'image à partir de la chaîne.
J'ai essayé: var content = content.replace(/<img.+>/,"");
et: var content = content.find("img").remove();
mais pas eu de chance.
Quelqu'un peut-il m'aider?
Grâce
où est la chaîne de caractères?
OriginalL'auteur MeltingDog | 2012-06-14
Vous devez vous connecter pour publier un commentaire.
[^>]*
signifie n'importe quel nombre de caractères autres que>
. Si vous utilisez.+
au lieu de cela, s'il y a plusieurs balises de l'opération de remplacement supprime tout à la fois, y compris tout contenu entre eux. Les opérations sont gourmands par défaut, ce qui signifie qu'ils utilisent le plus grand possible correspondance valide./g
à la fin signifie remplacer toutes les occurrences (par défaut, il ne supprime la première occurrence).Remarque: ne fonctionnera pas si le
img
est comme ceci:<img src="blah.png" title=">:(" />
. Une meilleure façon de le faire est:var content = $(content).find("img").remove().html();
il a besoin d'un
end()
fonction:var content = $(content).find("img").remove().end().html();
, comme par @Scott Evernden de réponse.Oh ouais. Merci.
Exactement ce que j'étais en avoir besoin! merci
OriginalL'auteur Matt Coughlin
Utiliser le
text()
fonction, il va supprimer toutes les balises HTML!Merci, mais j'ai besoin de conserver toutes les autres balises HTML mais pas ceux img
OriginalL'auteur powtac
end()
OriginalL'auteur Scott Evernden
La Regex suivante devrait faire l'affaire:
Premier correspond à la
<img
. Puis[^>"']*
correspond à tout caractère sauf>
,"
et'
n'importe quel nombre de fois. Puis(("[^"]*")|('[^']*'))
correspond à deux"
avec n'importe quel caractère (sauf"
lui-même, qui est cette partie[^"]*
) ou de la même chose, mais avec deux'
caractères.C'est encore suivie par n'importe quel caractère sauf pour
>
,"
et'
n'importe quel nombre de fois. La Regex conclut lorsqu'il trouve un>
l'extérieur d'un jeu de guillemets simples ou doubles.Ce serait alors un compte pour avoir
>
caractères à l'intérieur de l'attribut chaînes, comme l'a souligné @Derek 朕會功夫 et serait donc match et de supprimer tous les quatre balises d'image dans le scénario de test suivant:C'est bien sûr inspiré par @Matt Coughlin's réponse.
OriginalL'auteur mlunoe
Fait ce travail pour vous?:
OriginalL'auteur senfo
Vous pouvez charger le texte comme un élément du DOM, puis utiliser jQuery pour trouver toutes les images et de les supprimer. De manière générale, j'essaye de traiter le XML en html (dans ce cas) comme XML et de ne pas essayer d'analyser à travers les cordes.
OriginalL'auteur Jason
Je suis dans IE droit maintenant...cela fonctionnait très bien, mais mes tags sortir en majuscules (après en utilisant innerHTML, je crois) ... j'ai donc ajouté "je" pour le rendre insensible à la casse. Maintenant, Chrome et IE sont heureux.
OriginalL'auteur cakidnyc
De le faire sans regex ou des bibliothèques (lire jQuery), vous pouvez utiliser DOMParser pour analyser votre chaîne, puis utiliser du JS pour faire toutes les manipulations et re-sérialiser pour revenir à votre texte.
OriginalL'auteur PulseJet