История “как бы с башорга”:
Hett: А на перле это можно сделать так, $text =~ s/<(?:\/)?(?:html|head|body)(.*?)(?=>)/<!--$1--/g;
Hett: упс, не сюда
xxxx: а у меня не показываются эти смайлики :(
(источник)
История умалчивает, что именно хотел сделать Hett, но догадаться можно. И не только догадаться, но и найти проблемы в приведенном коде. Правда?
По-видимому, хочется убрать в комментарии все html-теги
html
, head
, body
– подготовить текст для вставки в другой html-документ, или что-то в таком роде.
Явные проблемы:
1. Из текста удаляются имена тегов, но остаются (в комментариях) атрибуты.
Это подозрительное поведение, пример: из <body alink=red>some text</body>
получится <!-- alink=red-->some text<!---->
Логичнее было бы или удалять и атрибуты тоже, или оставлять в комментарии исходный тег.
2. Игнорируются теги, открывающая и закрывающая угловые скобки которых находятся на разных строчках. Скорее всего, это неправильно. Пример: из
получается
3. Если действительно хочется получить чистый текст с html-разметкой,
то стоит удалить не только теги <head>
и </head>
,
но и все, что окажется между ними (<title>
, <meta>
…)
Мораль: для по-настоящему одноразового скрипта, которым (в личных целях) будет обработан единственный файл, можно и не задумываться о таких деталях. Но если скрипт будет выполняться в настоящей рабочей системе, регулярно или хотя бы “время от времени” – лучше сразу сделать все по возможности аккуратно.
И не говорите "такое никогда не случится". Во-первых, случится. А во-вторых, вам это не понравится.