регулярное выражение для изменения значения высоты и ширины в коде встраивания - PullRequest
1 голос
/ 26 мая 2009

HI

У меня есть приложение, в которое пользователи могут вставлять свой код для встраивания. Во время отображения я хочу изменить высоту и ширину кода встраивания на фиксированное значение по своему выбору. Можете ли вы сказать мне регулярное выражение, чтобы найти ширину и высоту в код для вставки. ширина = "300" высота = "500". Я хочу иметь возможность полностью получить эти два значения, чтобы я мог их заменить.

Спасибо

Ответы [ 3 ]

1 голос
/ 26 мая 2009

В следующих примерах учитывается порядок, какие цитаты используются, и если люди ставят пробелы

Прямая замена:

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

Или преобразовать ширину:

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

если вы действительно хотите удалить все это, но используйте значения:

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 "";
});
1 голос
/ 26 мая 2009

Регулярные выражения в принципе плохо разбирают HTML (см. . Можете ли вы привести некоторые примеры того, почему трудно анализировать XML и HTML с регулярным выражением? , почему). Что вам нужно, это HTML-парсер. См. Можете ли вы привести пример разбора HTML с вашим любимым парсером? для примеров использования различных парсеров.

Вас могут заинтересовать два ответа, связанных с JavaScript: jQuery и DOM .

0 голосов
/ 26 мая 2009

Это делает это:

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

и захватите первое и второе значения. Какой язык вы используете? Реализация может быть другой.

В PHP:


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

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

     print_r($matches);

...