I am using YUI rich text editor on my website (php/mysql), so that a user may enter textual matter/articles through it. But if a user copies and paste some embed code in the textarea, from any video sites like youtube, it should get saved as a text block and not as a playing video when showing the text content on the browser. Now YUI automatically converts the characters into html entities which ever is needed. Please note that if I put a new line in the yui editor (by pressing "Enter" key), it will be converted into a "<br>" tag in the background and this will not get html entity encoded when passing the value to my backend PHP script. But If I copy and paste any embed tag or for that reason any valid html tags in the textarea, it will be html entity encoded by YUI. Now to support UTF-8 characters, I am using a function (DBVarConv) in my php script before saving it into my database. The code for the function is given below
function DBVarConv($var,$isEncoded = false)
{
if($isEncoded)
return addslashes(htmlentities($var, ENT_QUOTES, 'UTF-8', false));
else
return htmlentities ($var, ENT_QUOTES, 'UTF-8', false);
}
$myeditorData = DBVarConv($myeditorData, true);
// Save $myeditorData in database.
While showing the data in the browser, I am using another function called "smart_html_entity_decode". The code is given below.
function smart_html_entity_decode($text, $isAddslashesUsed = false)
{
if($isAddslashesUsed)
$tmp = stripslashes(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
else
$tmp = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
if ($tmp == $text)
return $tmp;
return smart_html_entity_decode($tmp, $isAddslashesUsed);
}
// Get $myData from database
$myData=smart_html_entity_decode($myData, true);
echo $myData;
The problem is that in doing so, it is also decoding the embed and object tags from their html encoded entities and as a result my obejct tags are shown as a video and not as a simple text. Try using the text editor at tumblr.com. If you paste an embed code in the editor, it will be shown as a text block not as a video. I am trying to build the same functionality on my website with UTF-8 support.
Any help will be highly appreciated.