This class is a transparent base class for HTML and should not be accessed directly.
HTML helper class. Provides generic methods for generating various HTML tags and making output HTML safe.
Class declared in SYSPATH/classes/Kohana/HTML.php on line 13.
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) . ' />';
}