Notez que cet article a été écrit il y a plus de 4 ans, mais il n'est pas forcément obsolète.
Pour les besoins d’une fenêtre modale, j’ai dû parser (de l’anglais analyser pour extraire) une chaine de caractères ressemblant à une url comportant des paramètres.

Une telle url se présente de la façon suivante :
1 |
http://domain.com/file.php?width=800px&height=500px&allowfullscreen=1&rel=0 |
Dans mon cas, la chaine à parser est placée dans l’attribut class d’un lien <a>:
1 |
<a href="mon_lien" class="name-site xbsModal?iframe&width=800px&height=500px&allowfullscreen&rel=0 test xbs" rel="home">Mon Lien</a> |
Il faut extraire le type iframe et les paramètres qui suivent dans un tableau littéral attribut => valeur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$( 'a[class*="xbsModal"]' ).on( 'click', function( e ) { e.preventDefault(); var string = $( this ).attr( 'class' ); // Parse parameters var match = string.match( /xbsModal[?&]?([^&?]+)*(&\S+)*/ ) var type = ( typeof match[1] === 'undefined' ) ? 'image' : match[1]; var data = []; if ( typeof match[2] !== 'undefined' ) data = match[2].slice( 1 ).split( '&' ); // Parse data after type var temp = []; var params = {}; for( var i = 0; i < data.length; i++ ) { temp = data[i].split( '=' ); params[ temp[0] ] = ( typeof temp[1] === 'undefined' ) ? '' : temp[1]; } }); |
- Ligne 1 : On récupère les liens ayant une classe avec la chaine xbsModal,
- Ligne 5 : On récupère la chaine à l’intérieur de class,
- Ligne 9 : Expression régulière pour extraire les paramètres :
- Le 1er paramètre type :
- = 'image' s’il n’existe pas
- = 'iframe' dans ce cas
- La chaine suivante si elle existe : &width=800px&height=500px&allowfullscreen&rel=0
- Le 1er paramètre type :
- Ligne 16 : On place les paramètres dans un tableau littéral attribut => valeur.
Object {width: "800px", height: "500px", allowfullscreen: "", rel: "0"}
Et hop, un moyen efficace, pas si simple que ça, pour extraire des paramètres et que l’on peut adapter pour une url compliquée.