Спецификация иногда располагается внутри текста, а не в начале - если файл был собран некоторое время php из других файлов, используя, например, include_once () . Чтобы удалить его, удалите область между хотя бы одним символом до спецификации и хотя бы одним знаком после спецификации (на всякий случай). Положение спецификации может быть найдено в F12 Developer Tools Internet Explorer и, возможно, Edge. Он визуализируется как черный бриллиант / ромб .
Visual Studio и WebMatrix могут сохранять файлы с подписью или без нее (в начале).
Спецификация вызывает ошибки во время проверки (https://validator.w3.org/#validate_by_upload) или в консолях - может рассматриваться как потерянный элемент без , если он явно присутствует!:
Ошибка: заголовок паразитного конца.
как второй , когда существует только один и все верно:
Ошибка: начальное тело тега замечено, но элемент того же типа уже был
открыт.
И весь документ можно увидеть без DOCTYPE, когда спецификация или две спецификации занимают первую строку, а DOCTYPE находится во второй строке, с сообщением, похожим на это:
Ошибка: обнаружены непробельные символы, но сначала не отображается тип документа.
Ожидаемый, например <! DOCTYPE html>.
Ошибка: в заголовке элемента отсутствует обязательный экземпляр дочернего элемента
название.
Ошибка: случайный тип документа.
Ошибка: начальный тэг html.
Ошибка: начальная метка начального шага.
Ошибка: имя атрибута не разрешено для мета элемента в данный момент.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: на данном этапе мета-элемент не разрешен для мета-элемента.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: имя атрибута не разрешено для мета элемента в данный момент.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: в ссылке на элемент отсутствует свойство обязательного атрибута.
Ошибка: имя атрибута не разрешено для мета элемента в данный момент.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: имя атрибута не разрешено для мета элемента в данный момент.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: в данный момент имя атрибута не разрешено для мета элемента.
Ошибка: в элементе meta отсутствует одно или несколько из следующих
атрибуты: itemprop, свойство.
Ошибка: заголовок элемента не допускается как дочерний элемент тела в этом
контекст. (Подавление дальнейших ошибок из этого поддерева.)
Ошибка: стиль элемента не допускается как дочерний элемент тела в этом
контекст. (Подавление дальнейших ошибок из этого поддерева.)
Ошибка: головка метки с паразитным концом.
Ошибка: начальное тело тега замечено, но элемент того же типа уже был
открыт.
Неустранимая ошибка: невозможно восстановить после последней ошибки. Любые дальнейшие ошибки будут
быть проигнорированным.
(https://validator.w3.org/#validate_by_uri)
И поток сообщений в консоли IE F12 Developer Tools:
HTML1527: ожидается DOCTYPE. Попробуйте добавить действительный тип документа HTML5: "<! DOCTYPE html>".
HTML1502: неожиданный DOCTYPE. Разрешен только один DOCTYPE, и он должен встречаться перед любыми элементами.
HTML1513: Найден дополнительный тег "". Для каждого документа должен существовать только один тег "".
HTML1503: неожиданный начальный тег. HTML1512: несоответствующий конечный тег.
Все вызвано одной спецификацией в начале. И отладчик показывает один черный ромб в первой строке.
Файлы, сохраненные с подписью, но не собранные php, не вызывают таких ошибок, а черные бриллианты не видны в отладчике IE. Так что, возможно, PHP преобразовывает спецификацию как-то. Похоже, что основной файл php должен быть сохранен с подписью, чтобы увидеть это.
Эти странные символы появляются в начале и / или на границах файлов, объединенных с помощью include_once (), и не видны, когда файлы сохраняются ранее без подписи. Вот почему это указывает на участие спецификации.
Я заметил это все позавчера, когда начал конвертировать мой сайт в HTML5 и проверять.
Спецификация также может создать небольшой отступ в начале строки. Два файла, содержащие одинаковый текст, но один с отступом.