Как сохранить указанные HTML-теги - PullRequest
1 голос
/ 24 сентября 2010

Я использую этот шаблон для удаления всех тегов HTML (код Java):

String html="text <a href=#>link</a> <b>b</b> pic<img src=#>";
html=html.replaceAll("\\<.*?\\>", "");

System.out.println(html);

Теперь я хочу сохранить тег <a ...></a>) и тег <img ...>

Я хочу, чтобы результат был:

text <a href=#>link</a> b pic<img src=#>

Как это сделать?


Мне не нужен HTML-анализатор для этого,

потому что мне нужен этот шаблон регулярных выражений для фильтрации большого количества фрагментов html,

Итак, я хочу решение с регулярным выражением

Ответы [ 5 ]

3 голосов
/ 24 сентября 2010

Вы могли бы сделать это, используя отрицательный взгляд:

"<(?!(?:a|/a|img)\\b).*?>"

Rubular

Однако у этого есть ряд проблем, и я бы рекомендовал вместо этого использовать HTML-анализатор, если вы хотите надежное решение.

Для получения дополнительной информации см. Этот вопрос:

0 голосов
/ 10 апреля 2011

Я рекомендую вам использовать strip_tags (функция PHP)

string strip_tags ( string $str [, string $allowable_tags ] )

    <?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

OUTPUT

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
0 голосов
/ 24 сентября 2010

Используйте правильный анализатор HTML, например htmlparser , Jericho или HTML-анализатор validator.nu .Затем используйте API синтаксического анализатора, SAX или DOM, чтобы извлечь интересующий вас материал.

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

См. также этот ответ .

0 голосов
/ 24 сентября 2010
0 голосов
/ 24 сентября 2010

Проверьте это http://sourceforge.net/projects/regexcreator/.Это очень удобный редактор GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...