From m204wiki
Jump to navigation Jump to search

Do character entity substitution

Note: Many $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the $Ent function.

This function performs character entity substitution on an input string using the default character entity substitution table or one set by the most recent $Ent_Tab call.

$Ent accepts one argument and returns a string result.

The first argument is the string on which character entity translation is to be performed. This is an optional argument though the use of $Ent without this argument is somewhat silly as it simply returns a null.


%result = $Ent(string)

%result is set to the value of string with character entity substitution performed.

Character entity substitution replaces characters that have special meaning to an HTML or XML processor with their character entity representation. For example, the < is represented as the &lt; character entity. A default character entity substitution table is provided that does the basic required character entity mappings for HTML and XML of & to &, < to &lt; and the double quote character " to &quot;. The active character entity substitution table can be modified with $Ent_Tab.

The following code prints This is &lt; &quot;fun&quot; if the default character entity substitution tables are in effect:

PRINT $Ent('This is < "fun"')

Since character entity substitution always produces a string greater than or equal to the length of the input string, it is quite possible that a $Ent call will produce a string that is truncated at 255 bytes. If this is a concern, and the $Ent call is in a Print statement or is assigned to a variable that is ultimately printed, it is almost certainly better to have the character entity substitution occur at either of the following places, because in these cases the result of the character entity translation is not truncated at 255 bytes:

  • The Print statement, as a result of the $Ent_Print setting
  • The Html/Text statement, as a result of Ent_Print, Ent_Print, or the & special character after an expression start string

If this is not possible and truncation is a concern, another option is to break the string undergoing character entity substitution into pieces that are small enough that the resultant string cannot possibly be longer than 255 bytes. For the default substitution table, this would mean pieces no larger than 255/6 or 42 bytes, since the longest substitution string is &quot; which is 6 bytes long.

Products authorizing $Ent