PDA

View Full Version : Fix for problem posting HTML entities as plain text


Cap'n Steve
01-15-2006, 10:00 PM
HTML Entities Fix 1.0 (ported from vBulletin 3.0)

What does this hack do?

The short explanation: It makes it so & entities aren't escaped when posting.

The long explanation: As you may know, HTML uses entities in the form of &(something); to represent certain characters. For example, & will show up as & in the browser. vBulletin escapes any of these that you post so they show up as plain text. However, to be compatible with languages other than English, any entities in the form of &#(number); can't be escaped. That means things like ' (that represents a '), can't be posted as plain text without inserting empty bbcode in the middle of it. That's an ugly workaround, so I came up with this hack. Now, if you want to post ', just post ' and it will show up properly in the browser.

Why would I want to use this?

Well, if your forum involves discussing HTML or programming, or perhaps making modifications for popular forum software, this will let your users post instructions with entities in a way that makes much more sense than the current way. (hint, hint)



Here are the instructions, it should work on all 3.5 versions:

In includes/class_core.php find

'/&(?!' . ($entities ? '#[0-9]+' : '(#[0-9]+|[a-z]+)') . ';)/si',

Replace that with

//##################### Start HTML Entities Hack ###############################
'/&(?!' . ($entities ? '(#[0-9]+|amp)' : '(#[0-9]+|[a-z]+)') . ';)/si',
//##################### End HTML Entities Hack ###############################

EasyTarget
01-16-2006, 05:09 AM
nice job

Snake
01-16-2006, 09:29 AM
Excellent!

Reef
01-16-2006, 12:21 PM
Thanks Cap. This should be included in future builds.

michaelbenson
02-26-2006, 06:47 PM
Thanks Cap. This should be included in future builds.
I agree, perhaps this should be put forward in the vb.com suggestion forum?

Cap'n Steve
02-27-2006, 05:01 AM
I originally reported this as a bug (http://www.vbulletin.com/forum/bugs.php?do=view&bugid=3976), but they either didn't get the point or just like it the way it is now.