Как поправить PCRE подмаску, указав "всё после //", но только если это с начала строки или предваряется пробелом?

программирование php регулярные выражения pcre комментариии

Прошу простить, код
$a=preg_replace('#((?<=[^:])\/{2}.*)#u','',$a);
всё-таки вполне рабочий.
Одна беда - чистит DTD как комментарии.
Было бы здорово, если бы выражение указывало на только на "всё после пары слешей", но с начала строки или предваряется пробельными символами \s или символами, не образующими слово \W (как лучше, чтобы DTD остался цел?)
Собственно сама строка DTD в качестве примера:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Она содержит "опасные" сочетания: "..."-//W3C..." и "..."http://www..." из-за которых регулярка может решить, что дальше идёт комментарий.

Примечание:
Fred Mercury (Fred Mercury) 03.10.2012, 22:17:40
Спасибо. Похоже, что с регулярным выражением тут действительно слишком много нужно возиться, проще пока что оставить данное правило (оно оставляет ссылки в живых), а DTD подключать отдельно.

Epsiloncool (Epsilon S) 03.10.2012, 23:32:45
> который чистит любые комментарии в любых типах файлов?
Нет, вообще-то я в своих задачах буду чистить только HTML и PHP.
Кстати спасибо, что напомнили, что HTML тоже XML - можно почистить "специальными" функциями.
Ответы:
двойной слеш может быть в случаях:
Вы пишете универсальный код, который чистит любые комментарии в любых типах файлов ? Забудьте про это. Все форматы файлов имеют различные типы комментариев! На кой в XML чистить С-style комментарии, разве нельзя в XML искать только XML-комментарии ?


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.