Строка Php htmlspecialchars и теги?

Мне нужна помощь с моим скриптом чата, который прямо сейчас не позволяет использовать html-теги.

Мне нужно, чтобы разрешить теги <b> <u> и <i>, чтобы пользователи могли редактировать свои тексты.

Моя система превращает URL-адреса в ссылки, поэтому есть какая-то базовая система для некоторых html, но мне нужны эти системы редактирования текста. Вот файлы, с которыми можно поиграться, они в виде текстовых документов в моем собственном домене: http://shadowkiro.net/help_needed_stackowerflow

Я пытался искать ответы здесь и там, находя что-то о strip_tags и string htmlspecialchars. Они выглядят как то, что мне нужно, чтобы мои html-теги работали, и то, что мне нужно поместить в файл chat_room.js, но я совершенно не представляю, как заставить их в виде кода взаимодействовать с моим сайтом chat_room.tpl, где все сообщения чата отправляются в окно чата. В chat_room.tpl также есть собственные скрипты для чата жирным шрифтом, подчеркиванием и курсивом, которые будут выделять жирным шрифтом, курсивом или подчеркиванием весь текст, а не его часть. Мне нужна возможность выделить жирным шрифтом, курсивом или подчеркнуть только часть текста.

Вот небольшой принтскрин того, как выглядит мой чат: http://i1110.photobucket.com/albums/h448/shadowkiro/chat_window.png

Помоги мне?

Я n00b с этим и извините за мой плохой английский, это не мой родной язык.


Я пробовал это в chat_room.js, но это не сработало.

// B I U codes here

    if (typeof(converted_parts[i])=='undefined' && 0==msg_parts[i].indexOf('<b>') && msg_parts[i]) {
              msg_parts[i]='<b>'+htmlspecialchars(msg_parts[i])+'</b>';

}

    if (typeof(converted_parts[i])=='undefined' && 0==msg_parts[i].indexOf('<i>') && msg_parts[i]) {
              msg_parts[i]='<i>'+htmlspecialchars(msg_parts[i])+'</i>';

}

    if (typeof(converted_parts[i])=='undefined' && 0==msg_parts[i].indexOf('<u>') && msg_parts[i]) {
              msg_parts[i]='<u>'+htmlspecialchars(msg_parts[i])+'</u>';

}


person ShadowKiro    schedule 01.04.2013    source источник
comment
РТЛМ? php.net/strip_tags   -  person Marc B    schedule 01.04.2013
comment
Я тоже читал эту страницу, но не получил от нее всего. Я отредактировал свой первый пост, что я пробовал.   -  person ShadowKiro    schedule 01.04.2013
comment
не уверен, что ваш код должен выполнить. это не PHP. джаваскрипт, может быть? вы не можете использовать функции php в коде JS или наоборот.   -  person Marc B    schedule 01.04.2013
comment
О... Предполагается, что html-символы, такие как ‹i›, ‹u› и ‹b›, должны быть разрешены в тех файлах сценариев, которые я связал с моим сообщением. ^^'   -  person ShadowKiro    schedule 01.04.2013
comment
это было бы хорошо, но вы вызываете функцию php, используя аргумент javascript, в коде javascript. совершенно невозможно. php выполняется на сервере, javascript выполняется в клиентском браузере. Вы не можете смешивать два языка вот так.   -  person Marc B    schedule 02.04.2013
comment
Это бы многое объяснило... Тогда я должен как-то сделать это на языке javascript.   -  person ShadowKiro    schedule 02.04.2013


Ответы (2)


Используйте HTML Purifier. Это позволит вам создать белый список тегов HTML.

person Mr. Alien    schedule 01.04.2013

Сначала выполните htmlspecialchars(), затем замените полученный код на

<?php
$string=htmlspecialchars($string);

$string = 'any text <i>';
$patterns = array();
$patterns[0] = "/&lt;i&gt;/"; // for<i>
$patterns[1] = "/&lt;b&gt;/"; // for<b>
$patterns[2] = "/&lt;u&gt;/"; // for<u>

$replacements = array();

$replacements[0] = '<i>';
$replacements[1] = '</b>';
$replacements[2] = '</u>';

echo preg_replace($patterns, $replacements, $string);
?>
person vusan    schedule 02.04.2013