#php
#php
Вопрос:
Я так понимаю, вы в замешательстве. Я тоже, но я постараюсь сформулировать это так хорошо, как только смогу.
В системе управления контентом, которую я использую, установлен сторонний подключаемый модуль, который управляет выводом страниц, созданных CMS. Это то, что он должен делать, и именно поэтому я его установил, но есть одна небольшая часть этих манипуляций, от которой мне нужно избавиться.
Подключаемый модуль ищет </title>
тег в выводе HTML, а затем добавляет ненужный тег сразу после него (путем замены </title>
на </title><unwanted tag>
).
Вы можете подумать, почему бы просто не покопаться в исходном коде подключаемого модуля и не закомментировать эту конкретную функцию? Ну, в этом-то и загвоздка: плагин закодирован с помощью Zend Guard, поэтому я не могу разобраться в его исходном коде, и, к сожалению, разработчик не желает помогать.
Еще одной манипуляцией, от которой я смог избавиться самостоятельно, был дополнительный (и снова нежелательный) HTTP-заголовок, который он установил для каждой страницы.
PHP-файл в Zend-кодировке загружается обычным PHP-файлом, и я смог отменить вышеупомянутый заголовок, добавив следующий фрагмент кода в самый низ этого «файла загрузки», перед ?>
:
header_remove("X-Enhanced-By");
Это работает великолепно, но это было все, на что хватило моего опыта и исследований.
Последнее, что мне нужно отменить, это манипулирование тегом title. Я временно обошел это, изменив все мои </title>
теги на </title >
, но это вряд ли кажется подходящим обходным путем.
Если я могу отменить настройку заголовка, поместив его header_remove("X-Enhanced-By");
прямо перед ?>
, означает ли это, что я также могу использовать ту же область, чтобы отменить добавление нежелательного тега после </title>
?
Давайте предположим, что подключаемый модуль заменяет </title>
на </title><base href="http://www.example.com/" />
на каждой странице, которая выдается CMS.
Как бы мне это отменить?
Комментарии:
1. Можете ли вы получить доступ к необработанному выводу на каждой странице перед его отправкой (например, через перехват)?. Таким образом, вы могли бы заменить его с помощью регулярного выражения. Опубликуйте некоторый код, и мы узнаем больше..
Ответ №1:
В зависимости от платформы CMS. В принципе, вы должны быть в состоянии создать хук / плагин, который фиксирует вывод на более высоком уровне, чем ваш плагин, а затем регулярно выражать теги.
Я понимаю, что установленный плагин уже делает это, поэтому это должно быть «выполнимо»
Комментарии:
1. Похоже, что подключаемый модуль запущен поверх платформы CMS, а не внутри нее, поэтому любая попытка регулярного выражения тегов из файлов CMS бессмысленна, учитывая, что подключаемый модуль, по-видимому, добавляет теги после завершения работы PHP. Таким образом, они добавляются не на уровне PHP, а, вероятно, через движок Zend, и поскольку я не могу прочитать закодированные файлы, похоже, что не осталось никаких вариантов.