2009-05-26 5 views
1

HIregex pour changer la hauteur et la valeur de la largeur dans un code embed

J'ai une application où les utilisateurs peuvent coller leur Embed code.While afficher je veux changer la hauteur et la largeur du code embed à une valeur fixe de mon choix. Pouvez-vous me dire l'expression régulière pour trouver la largeur et la hauteur dans le code d'intégration. width = "300" height = "500". Je veux pouvoir obtenir ces deux valeurs complètement pour pouvoir les remplacer.

Merci

Répondre

0

Ce ne le fait:

width="(.*?)" height="(.*?)" 

et saisir les première et seconde valeurs. Quelle langue utilisez-vous? La mise en œuvre pourrait être différente.

En PHP:


    $pattern = '/width="(.*?)" height="(.*?)"/'; 
    $subject = 'width="500" height="300"'; 

    preg_match($pattern, $subject, $matches); 

    print_r($matches); 

+0

Je veux l'écrire en javascript –

+0

Vous ne savez pas sur javascript, mais si vous pouvez lire le code PHP ci-dessus, vous pouvez utiliser l'information ici pour le traduire: http://www.regular-expressions.info/javascript .html –

1

Les exemples suivants tiennent compte de la commande, que les citations sont utilisées, et si les gens mettent dans des espaces

A remplacer droite:

embeddedString = embeddedString.replace(/(width\s*=\s*["'])[0-9]+(["'])/ig, $1 + yourWidth + $2); 
embeddedString = embeddedString.replace(/(height\s*=\s*["'])[0-9]+(["'])/ig, $1 + yourHeight + $2); 

Ou pour transformer la largeur:

embeddedString = embeddedString.replace(/width\s*=\s*["']["']/ig, function($0, $1) 
{ 
    return $1 * 2; 
}); 

si vous voulez vraiment supprimer la chose, mais utiliser les valeurs suivantes:

var originalWidth; 
var originalHeight; 
embeddedString = embeddedString.replace(/(?:width|height)\s*=\s*["']([0-9]+)["']\s*(?:width|height)\s*=\s*["']([0-9]+)["']/ig, function($0, $1, $2, $3, $4) 
{ 
    // $0 = original string 
    // $1 = either 'width' or 'height' 
    // $2 = the value of width or height, depending on above 
    // $3 = either 'width' or 'height' 
    // $4 = the value of width or height, depending on above 
    // here you might want to set another value, eg: 
    originalWidth = $2; 
    return ""; 
}); 
+0

Merci Luke Mais quand j'utilise votre code ur comme suit: changement de fonction() { var embeddedString = document.getElementById ("Text1"). value; embeddedString = embeddedString.replace ('/ (width \ s * = \ s * [\ "]) [0-9] + ([\"])/ig', 'width = "500"'); document.getElementById ("Text2"). Value = embeddedString; } Il ne remplace aucune valeur. J'écris le code en javascript. Est-ce que je fais une erreur? Corrigez cela, s'il-vous-plaît. –

+0

Salut mini, faites-le sans les guillemets autour de l'expression régulière - la syntaxe // ig est une syntaxe spéciale pour regex compilé ' –

1

Regexes sont fondamentalement mauvais à l'analyse syntaxique HTML (voir Can you provide some examples of why it is hard to parse XML and HTML with a regex? pourquoi). Ce dont vous avez besoin est un analyseur HTML. Voir Can you provide an example of parsing HTML with your favorite parser? pour des exemples en utilisant une variété de parseurs. Vous pouvez être intéressé par les deux réponses liées à JavaScript: jQuery et DOM

+0

+1 Pour mentionner l'utilisation d'un analyseur approprié. Mais est-il possible d'utiliser jQuery/DOM sans que les ressources externes soient chargées automatiquement? – Gumbo

+0

@Gumbo Le DOM fait partie du navigateur Web, il devrait donc déjà vous attendre. –

+1

sauf qu'ils collent le code de sorte qu'il n'y a pas d'interprétation dans un dom par le navigateur –

Questions connexes