ГлавнаяWordpressПолезности → Меняем символы ХТМЛ (< >) на спецсимволы при комментировании

Меняем символы ХТМЛ (< >) на спецсимволы при комментировании

Комментариев: 12Меняем символы ХТМЛ (< >) на спецсимволы при комментировании
  • Подскажите пожалуйста, каким плагином вы пользуетесь для вывода программного кода в постах и комментариях (например, как в этом посте)?

    ОТВЕТИТЬ ↓
    • Старой версией, немного переделанного мной скрипта SyntaxHighlighter. Последнюю версию можете скачать на домашней странице скрипта, там же можно найти инструкцию по применению.

      ОТВЕТИТЬ ↓
  • А как вы заменили стандартные XHTML: Вы можете использовать следующие теги: <a href="" title="" rel="nofollow"> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> на кнопочки? Есть ли плагин для этого?

    ОТВЕТИТЬ ↓
    • Кнопочки реализованы плагином: jQuery Comment Preview.

      ОТВЕТИТЬ ↓
  • ну да а с этим как быть

    javascript:/*--></marquee></script></title></textarea></noscript></style></xmp>">[img=1]<img -/style=-=expression&#40/*’/-/*',/**/eval(name)//);width:100%;height:100%;position:absolute;behavior:url(#default#VML);-o-link:javascript:eval(title);-o-link-source:current name=alert(1) onerror=eval(name) src=1 autofocus onfocus=eval(name) onclick=eval(name) onmouseover=eval(name) background=javascript:eval(name)//>"
    
    javascript:/*-->">[img=1]<img src="1" />"
    

    на одном моем блоге от него alert

    ОТВЕТИТЬ ↓
    • Не понял, в чем проблема?

      ОТВЕТИТЬ ↓
  • у меня заработала только когда сделал так:

        <?php
        /* Преобразуем хтмл символы  < > в спецсимволы при отправке комментария */
        function kama_html_replace_char_code_pre ($matches){
            $out = str_replace (array ('<'   ,'>'),   array ('<','>'),  $matches[3] );
            return "<{$matches[1]}{$matches[2]}>".$out."</{$matches[1]}>";
        }
        function kama_convert_html ($comment_text){ // подготавливает контент комментатора
            $comment_text = preg_replace_callback ('!<(pre|code)([^>]*)>(?:\r\n|\n|\r|)(.*?)(?:\r\n|\n|\r|)</\\1>!ims', 'kama_html_replace_char_code_pre', $comment_text);
            return $comment_text;
        }  
    
        add_filter ('pre_comment_content','kama_convert_html');
    //Скопировал эту строку еще раз.
        add_filter ('pre_comment_content','kama_convert_html');
         ?>  

    И еще уже второй день думаю почему так?

    str_replace (array ('<'   ,'>'),   array ('<','>'),  $matches[3]);
    

    вроде как заменять на & lt; & gt; нужно (пробелы добавил чтобы не преобразовывалось), а так ведь строка не должна изменятся.

    ОТВЕТИТЬ ↓
    • Поспешил, ничего не заработало smile

      Если делаю так:

      function kama_html_replace_char_code_pre ($matches){
      	$out = str_replace (array ('<'   ,'>'),	array ('& lt;','& gt;'),	$matches[3]	); // без пробелов.
          return "<{$matches[1]}{$matches[2]}>".$out."</{$matches[1]}>";
      }
      function kama_convert_html ($comment_text){ // подготавливает контент комментатора
      	$comment_text = preg_replace_callback ('!<(pre|code)([^>]*)>(?:\r\n|\n|\r|)(.*?)(?:\r\n|\n|\r|)</\\1>!ims', 'kama_html_replace_char_code_pre', $comment_text);
      	return $comment_text;
      }
      add_filter ('pre_comment_content','kama_convert_html');

      то сохраняется так & amp;lt; (без пробела). Думаю где-то ампресанд заменяется..

      ОТВЕТИТЬ ↓
    • Ага, у меня в коде была ошибка, поправил. Спасибо что указали на нее.

      Строка должна выглядеть так:

      $out = str_replace (array ('<'   ,'>'),	array ('&lt;','&gt;'),	$matches[3]	);
      ОТВЕТИТЬ ↓
      • Но у меня почему-то все равно не работает.

        Без функции так:

        админ. - кавычки преобразованы в &lt; (и все отображается как нужно)
        посетитель - теги вырезаются.

        с функцией:

        у админа и посетителя кавычки преобразуются в &amp;lt;, соотвественно в комментариях выводится &lt; вместо кавычек.

        Уже по всякому пробовал, ничего не получилось пока sad

        ОТВЕТИТЬ ↓
        • У вас видимо есть еще какой-то плагин, который конфликтует в этим кодом. Т.е. мой код заменяет кавычки, а тот плагин затем преобразует & в &amp;

          ОТВЕТИТЬ ↓
  • Привет, Тимур! С наступающим Новым Годом!
    У меня вопрос по SyntaxHighlighter Evolved. Проблема такая, что при выводе кода на странице заменяются символы и другие на спец. символы. Я не хочу, чтобы они заменялись, а выводились в XHTML. Как это реализовать? Не силен в этом вопросе, к сожалению. Не поможете разобраться?
    Заранее спасибо. Надеюсь на скорый ответ, желательно на e-mail.

    ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?