PHP заменяет неправильно отформатированный код - PullRequest
0 голосов
/ 27 марта 2012

Я все еще изучаю php и столкнулся с тем, что должно быть относительно легко исправить, но я застрял, поэтому любая помощь приветствуется:)

У меня есть сайт Wordpress, на котором используется плагин, который я не хочу отключать. Я пытаюсь проверить весь код на странице индекса на w3c, и мне удалось это сделать, за исключением одной строки.

Плагин использует javascript для вставки кода, который не проходит проверку:

<link rel='stylesheet' id='flags/tpw_flags_css-css'  href='http://www.xxx.xxx/wp-content/plugins/transposh-translation-filter-for-wordpress/widgets/flags/tpw_flags_css.css?ver=0.8.2' type='text/css' media='all' />

Ошибка проверки происходит с "id = 'flags / tpw_flags_css-css'", поскольку она содержит обратную косую черту. Я думаю, честно говоря, идентификатор может быть удален полностью. Я попытался удалить из javascript безуспешно, поэтому подумал, что смогу сделать замену строки $ html, но и там нет никакой радости.

Я пытался поместить различные параметры как в header.php, так и в footer.php до запуска html-контента и в конце после закрытия html, но без радости:

<?php $html = str_replace("id='flags/tpw_flags_css-css'", "", $html); ?>

Я слышал о preg_replace, но все еще новичок в PHP.

Любые идеи правильного решения для этого очень ценятся С уважением Тони

Ответы [ 3 ]

1 голос
/ 27 марта 2012

Поместите это перед тем, как что-нибудь вывести в ваш файл header.php:

ob_start('fix_id');

Поместите это в свой файл functions.php:

function fix_id($input) {
    $input = str_replace("id='flags/tpw_flags_css-css'", "", $input);
    return $input;
}
0 голосов
/ 27 марта 2012

Как насчет использования jQuery для очистки атрибута id? Может быть, что-то вроде этого:

$ ("link [id = 'flags / tpw_flags_css-css']"). Attr ('id', '');

EDIT:

Если вы ничего не знаете о jQuery, просто укажите это в заголовке страницы:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>          
<script type="text/javascript">                                         
    $(document).ready(function() {
        $("link[id='flags/tpw_flags_css-css']").attr('id', '');
    });
</script>  

ПРИМЕЧАНИЕ. На самом деле, если подумать, ваша страница по-прежнему не будет проверяться с помощью этого метода, поскольку источником будет HTML, который используется до применения jQuery.

Вот надежный способ на 100%: Перейдите на вкладку «Проверка по прямому вводу» службы проверки w3c: http://validator.w3.org/#validate_by_input. Вырежьте и вставьте источник вашей страницы в текстовое поле. Удалите атрибут id из тега ссылки. Нажмите «Проверить» для подтверждения ...

ОБНОВЛЕНИЕ: Ваши единственные варианты, как я вижу, следующие:

  1. Поймать вывод страницы в строку перед ее обработкой и отфильтровать ее, используя str_replace или preg_replace, как это было предложено Sudhir - как вы уже безуспешно пытались это сделать.

  2. Возьмитесь за разработчиков плагинов и попросите их изменить код.

  3. Редактируйте локальный код плагина самостоятельно.

0 голосов
/ 27 марта 2012

Попробуйте это:

$newStr = preg_replace("/id=\'flags\/tpw_flags_css-css\'/", "", $str);
...