HTML helper class. Provides generic methods for generating various HTML tags and making output HTML safe.
Class declared in SYSPATH/classes/HTML.php on line 3.
array
$attribute_orderpreferred order of attributes
array(28) ( 0 => string(6) "action" 1 => string(6) "method" 2 => string(4) "type" 3 => string(2) "id" 4 => string(4) "name" 5 => string(5) "value" 6 => string(4) "href" 7 => string(3) "src" 8 => string(5) "width" 9 => string(6) "height" 10 => string(4) "cols" 11 => string(4) "rows" 12 => string(4) "size" 13 => string(9) "maxlength" 14 => string(3) "rel" 15 => string(5) "media" 16 => string(14) "accept-charset" 17 => string(6) "accept" 18 => string(8) "tabindex" 19 => string(9) "accesskey" 20 => string(3) "alt" 21 => string(5) "title" 22 => string(5) "class" 23 => string(5) "style" 24 => string(8) "selected" 25 => string(7) "checked" 26 => string(8) "readonly" 27 => string(8) "disabled" )
boolean
$strictuse strict XHTML mode?
bool TRUE
boolean
$windowed_urlsautomatically target external URLs to a new window?
bool FALSE
Create HTML link anchors. Note that the title is not escaped, to allow HTML elements within links (images, etc).
echo HTML::anchor('/user/profile', 'My Profile');
string
$uri
required - URL or URI string string
$title
= NULL - Link text array
$attributes
= NULL - HTML anchor attributes mixed
$protocol
= NULL - Protocol to pass to URL::base() boolean
$index
= bool TRUE - Include the index page string
public static function anchor($uri, $title = null, array $attributes = null, $protocol = null, $index = true)
{
if ($title === null) {
// Use the URI as the title
$title = $uri;
}
if ($uri === '') {
// Only use the base URL
$uri = URL::base($protocol, $index);
} else {
if (strpos($uri, '://') !== false) {
if (HTML::$windowed_urls === true AND empty($attributes['target'])) {
// Make the link open in a new window
$attributes['target'] = '_blank';
}
} elseif ($uri[0] !== '#' AND $uri[0] !== '?') {
// Make the URI absolute for non-fragment and non-query anchors
$uri = URL::site($uri, $protocol, $index);
}
}
// Add the sanitized link to the attributes
$attributes['href'] = $uri;
return '<a' . HTML::attributes($attributes) . '>' . $title . '</a>';
}
Compiles an array of HTML attributes into an attribute string. Attributes will be sorted using HTML::$attribute_order for consistency.
echo '<div'.HTML::attributes($attrs).'>'.$content.'</div>';
array
$attributes
= NULL - Attribute list string
public static function attributes(array $attributes = null)
{
if (empty($attributes))
return '';
$sorted = [];
foreach (HTML::$attribute_order as $key) {
if (isset($attributes[$key])) {
// Add the attribute to the sorted list
$sorted[$key] = $attributes[$key];
}
}
// Combine the sorted attributes
$attributes = $sorted + $attributes;
$compiled = '';
foreach ($attributes as $key => $value) {
if ($value === null) {
// Skip attributes that have null values
continue;
}
if (is_int($key)) {
// Assume non-associative keys are mirrored attributes
$key = $value;
if (!HTML::$strict) {
// Just use a key
$value = false;
}
}
// Add the attribute key
$compiled .= ' ' . $key;
if ($value OR HTML::$strict) {
// Add the attribute value
$compiled .= '="' . HTML::chars($value) . '"';
}
}
return $compiled;
}
Convert special characters to HTML entities. All untrusted content should be passed through this method to prevent XSS injections.
echo HTML::chars($username);
string
$value
required - String to convert boolean
$double_encode
= bool TRUE - Encode existing entities string
public static function chars($value, $double_encode = true)
{
return htmlspecialchars((string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}
Convert all applicable characters to HTML entities. All characters that cannot be represented in HTML with the current character set will be converted to entities.
echo HTML::entities($username);
string
$value
required - String to convert boolean
$double_encode
= bool TRUE - Encode existing entities string
public static function entities($value, $double_encode = true)
{
return htmlentities((string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}
Creates an HTML anchor to a file. Note that the title is not escaped, to allow HTML elements within links (images, etc).
echo HTML::file_anchor('media/doc/user_guide.pdf', 'User Guide');
string
$file
required - Name of file to link to string
$title
= NULL - Link text array
$attributes
= NULL - HTML anchor attributes mixed
$protocol
= NULL - Protocol to pass to URL::base() boolean
$index
= bool FALSE - Include the index page string
public static function file_anchor($file, $title = null, array $attributes = null, $protocol = null, $index = false)
{
if ($title === null) {
// Use the file name as the title
$title = basename($file);
}
// Add the file link to the attributes
$attributes['href'] = URL::site($file, $protocol, $index);
return '<a' . HTML::attributes($attributes) . '>' . $title . '</a>';
}
Creates a image link.
echo HTML::image('media/img/logo.png', ['alt' => 'My Company']);
string
$file
required - File name array
$attributes
= NULL - Default attributes mixed
$protocol
= NULL - Protocol to pass to URL::base() boolean
$index
= bool FALSE - Include the index page string
public static function image($file, array $attributes = null, $protocol = null, $index = false)
{
if (strpos($file, '://') === false) {
// Add the base URL
$file = URL::site($file, $protocol, $index);
}
// Add the image link
$attributes['src'] = $file;
return '<img' . HTML::attributes($attributes) . ' />';
}
Creates an email (mailto:) anchor. Note that the title is not escaped, to allow HTML elements within links (images, etc).
echo HTML::mailto($address);
string
$email
required - Email address to send to string
$title
= NULL - Link text array
$attributes
= NULL - HTML anchor attributes string
public static function mailto($email, $title = null, array $attributes = null)
{
if ($title === null) {
// Use the email address as the title
$title = $email;
}
return '<a href="mailto:' . $email . '"' . HTML::attributes($attributes) . '>' . $title . '</a>';
}
Creates a script link.
echo HTML::script('media/js/jquery.min.js');
string
$file
required - File name array
$attributes
= NULL - Default attributes mixed
$protocol
= NULL - Protocol to pass to URL::base() boolean
$index
= bool FALSE - Include the index page string
public static function script($file, array $attributes = null, $protocol = null, $index = false)
{
if (strpos($file, '://') === false AND strpos($file, '//') !== 0) {
// Add the base URL
$file = URL::site($file, $protocol, $index);
}
// Set the script link
$attributes['src'] = $file;
// Set the script type
$attributes['type'] = 'text/javascript';
return '<script' . HTML::attributes($attributes) . '></script>';
}
Creates a style sheet link element.
echo HTML::style('media/css/screen.css');
string
$file
required - File name array
$attributes
= NULL - Default attributes mixed
$protocol
= NULL - Protocol to pass to URL::base() boolean
$index
= bool FALSE - Include the index page string
public static function style($file, array $attributes = null, $protocol = null, $index = false)
{
if (strpos($file, '://') === false AND strpos($file, '//') !== 0) {
// Add the base URL
$file = URL::site($file, $protocol, $index);
}
// Set the stylesheet link
$attributes['href'] = $file;
// Set the stylesheet rel
$attributes['rel'] = empty($attributes['rel']) ? 'stylesheet' : $attributes['rel'];
// Set the stylesheet type
$attributes['type'] = 'text/css';
return '<link' . HTML::attributes($attributes) . ' />';
}