2009-05-26 4 views
1

HALLOregex für Höhe zu verändern und Breitenwert in einem eingebetteten Code

Ich habe eine Anwendung, wo Benutzer ihre einbetten einfügen können code.While Anzeige ich die Höhe und Breite des Einbettungscode auf einen festen Wert ändern möchten von meine Wahl. Können Sie mir den regulären Ausdruck mitteilen, um die Breite und Höhe im Einbettungscode zu finden? width = "300" height = "500". Ich möchte diese beiden Werte vollständig erhalten, damit ich sie ersetzen kann.

Dank

Antwort

0

Dies tut es:

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

und die ersten und zweiten Werte greifen. Welche Sprache verwendest du? Die Implementierung könnte anders sein.

In PHP:


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

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

    print_r($matches); 

+0

Ich möchte es in Javascript schreiben –

+0

Nicht sicher über Javascript, aber wenn Sie den PHP-Code oben lesen können, können Sie die Info hier verwenden, um es zu übersetzen: http://www.regular-expressions.info/javascript .html –

1

Die folgenden Beispiele berücksichtigen die Bestellung, welche Zitate verwendet werden, und wenn die Menschen in Räumen setzen

Eine gerade ersetzen:

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

Or um die Breite zu transformieren:

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

, wenn Sie tatsächlich die ganze Sache entfernen mögen, aber die Werte verwenden:

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

Danke Luke Aber wenn ich ur Code wie folgt verwende: Funktion ändern() { var embeddedString = document.getElementById ("Text1"). value; embeddedString = embeddedString.replace ('/ (Breite \ s * = \ s * [\ "]) [0-9] + ([\"])/ig', 'width = "500"'); document.getElementById ("Text2"). Value = eingebetteterString; } Es ersetzt keine Werte. Ich schreibe den Code in Javascript. Mache ich einen Fehler? Bitte korrigiere es. –

+0

Hallo Mini, tun Sie es ohne die Anführungszeichen um den regulären Ausdruck - die // ig-Syntax ist eine spezielle Syntax für kompilierte Regex ' –

1

Regexes sind bei Parsing HTML grundsätzlich schlecht (siehe Can you provide some examples of why it is hard to parse XML and HTML with a regex? warum). Was Sie brauchen, ist ein HTML-Parser. Beispiele finden Sie unter Can you provide an example of parsing HTML with your favorite parser? mit einer Vielzahl von Parsern.

Sie könnten an den zwei Antworten im Zusammenhang mit JavaScript interessiert sein: jQuery und DOM.

+0

+1 Für die Verwendung eines geeigneten Parser zu erwähnen. Aber ist es möglich, das jQuery/DOM zu verwenden, ohne dass die externen Ressourcen automatisch geladen werden? – Gumbo

+0

@Gumbo Das DOM ist Teil des Webbrowsers, also sollte es bereits auf Sie warten. –

+1

mit der Ausnahme, dass sie den Code einfügen, damit vom Browser keine Interpretation in ein dom erfolgt –