Как мне управлять выводом PHP-скрипта, когда им уже управляет другой скрипт (подключаемый модуль)?

#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, и поскольку я не могу прочитать закодированные файлы, похоже, что не осталось никаких вариантов.