views:

129

answers:

0

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.