J'essaie de comprendre comment puis-je extraire une URL de la chaîne suivante dans JS.
var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]';
Je voudrais en quelque sorte extraire uniquement la valeur http://website.com/wp-content/uploads/image-placeholder.jpg
de ce shortcode WordPress qui est lu par l'éditeur WordPress TinyMCE.
Je dois ajouter que la chaîne ne sera pas toujours au format exact et que la position de img=""
fluctuera.
Existe-t-il un moyen d'analyser cette chaîne en tant que JSON ou tableau afin que je puisse accéder à la valeur de img
?
3 réponses
/img="([^"]*)"/.exec(str)[1]
En anglais: créez une expression régulière qui correspond à la partie img
, mettez l'URL dans le groupe 1 et après avoir exécuté l'expression sur la chaîne, récupérez le contenu du groupe 1.
L'expression se décompose comme
img=" # the string 'img="' ( # begin group 1 [^"]* # any character that is not a '"', any number of times ) # end group 1 " # the final double quote
Documentation pertinente: RegExp.prototype.exec()
sur le MDN et bien sûr le principal site d'informations sur les expressions régulières: http://www.regular-expressions.info /.
Votre meilleur pari est une expression régulière.
var regEx= /"http:\/\/.+?"/g; //If you want to extract all urls.
var imgEx= /img=".+?"/g // If you want to extract all img parameters.
Une façon pas si OO de le faire:
var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]';
var url = null;
str.split(' ').forEach(function(s){
if(s.indexOf('img') > -1) {
url = s.split("=")[1]
}
})
// url now contains your url
console.log(url);
Ou en une ligne:
var url = str.split(' ').filter(function(s){ return s.indexOf('img') > -1})[0].split("=")[1]
Questions connexes
Questions liées
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.