Закройтесь весь HTML открыл теги img

Действительно ли возможно сделать замену regex на всех тегах img, которые открыты? Если так, как был бы я определять:

  <img src="..." alt="...">

... как потенциал canidate, чтобы быть замененным?

   = <img src="..." alt="..."/>

Обновление: у Нас есть сотни страниц и тысячи тегов изображения, все должны, которых должен быть закрыт. Я не застреваю на RegEx - любой другой метод, кроме ручного обновления всех тегов img, был бы достаточен.

19
задан George Johnston 12 March 2010 в 15:46
поделиться

4 ответа

(<img[^>]+)(?<!/)>

будет соответствовать тегу img , который не закрыт должным образом. Для этого требуется, чтобы используемый вами вариант регулярного выражения поддерживал просмотр назад (чего нет в Ruby и JavaScript, но есть в большинстве других). Обратной ссылки нет. 1 будет содержать совпадение, поэтому, если вы выполните поиск этого регулярного выражения и замените его на \ 1 /> , все будет в порядке.

Если вам нужно учесть возможность > внутри атрибутов, вы можете использовать

(<img("[^"]*"|[^>])+)(?<!/)>

Это будет соответствовать, например,

<img src="image.gif" alt="hey, look--->">
<img src="image/image.gif">

и оставить

<img src="image/image.gif" />

в покое.

13
ответ дан 30 November 2019 в 05:06
поделиться

В HTML конечный тег для «должен быть опущен», поэтому начальный тег закрывает элемент, и у вас не может быть незакрытого img.

Если вы хотите преобразовать ваш HTML в XHTML, используйте настоящий парсер. Регулярные выражения - не очень хороший инструмент для этой работы.

3
ответ дан 30 November 2019 в 05:06
поделиться

Я никогда не пробовал этого, но закрытый тег img - это тег, начинающийся с с вставками и /> в конце.

Вот кое-что, что я пробовал в perl

!/usr/bin/env perl

my @images = ('<img src="toto.jpg">',
          '<img src="truc/machin.jpg" title="pouet" >',
          '<img        src="pouet.jpg" alt="toto" />',
          '<img src="math/a-greater-than-b.png" alt="a > b">');

foreach (@images) {
    if (/<img\s+(([a-z]+=".*?")+\s*)>/) {
    print "Match : <img $1 />\n";
    }
}

Produces:

Match : <img src="toto.jpg" />
Match : <img src="truc/machin.jpg" title="pouet"  />
Match : <img src="math/a-greater-than-b.png" alt="a > b" />
-1
ответ дан 30 November 2019 в 05:06
поделиться

Что именно вы подразумеваете под «незакрытой»?

 <img src="a1.jpg    <--no ending quotes and end parens
 <img src="a1.jpg"   <-- no end parens
 <img src="a1.jpg">  <-- the tag does not self-close as should be done in XHTML

Вы можете попытаться разумно найти таких подозреваемых, но вы никогда не гарантируете, что будете надежными.

0
ответ дан 30 November 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: