Modules

HTML
extends Kohana_HTML

HTML helper class. Provides generic methods for generating various HTML tags and making output HTML safe.

package
Kohana
category
Helpers
author
Kohana Team
copyright
© 2007-2012 Kohana Team
license
https://kohana.top/license

Class declared in SYSPATH/classes/HTML.php on line 3.

Properties

public static array $attribute_order

preferred 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"
)

public static boolean $strict

use strict XHTML mode?

bool TRUE

public static boolean $windowed_urls

automatically target external URLs to a new window?

bool FALSE

Methods

public static anchor( string $uri [, string $title = NULL , array $attributes = NULL , mixed $protocol = NULL , boolean $index = bool TRUE ] ) (defined in Kohana_HTML)

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');

Parameters

  • 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

Tags

Return Values

  • string

Source Code

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>';
}

public static attributes( [ array $attributes = NULL ] ) (defined in Kohana_HTML)

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>';

Parameters

  • array $attributes = NULL - Attribute list

Return Values

  • string

Source Code

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;
}

public static chars( string $value [, boolean $double_encode = bool TRUE ] ) (defined in Kohana_HTML)

Convert special characters to HTML entities. All untrusted content should be passed through this method to prevent XSS injections.

echo HTML::chars($username);

Parameters

  • string $value required - String to convert
  • boolean $double_encode = bool TRUE - Encode existing entities

Return Values

  • string

Source Code

public static function chars($value, $double_encode = true)
{
    return htmlspecialchars((string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}

public static entities( string $value [, boolean $double_encode = bool TRUE ] ) (defined in Kohana_HTML)

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);

Parameters

  • string $value required - String to convert
  • boolean $double_encode = bool TRUE - Encode existing entities

Return Values

  • string

Source Code

public static function entities($value, $double_encode = true)
{
    return htmlentities((string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}

public static file_anchor( string $file [, string $title = NULL , array $attributes = NULL , mixed $protocol = NULL , boolean $index = bool FALSE ] ) (defined in Kohana_HTML)

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');

Parameters

  • 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

Tags

Return Values

  • string

Source Code

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>';
}

public static image( string $file [, array $attributes = NULL , mixed $protocol = NULL , boolean $index = bool FALSE ] ) (defined in Kohana_HTML)

Creates a image link.

echo HTML::image('media/img/logo.png', ['alt' => 'My Company']);

Parameters

  • 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

Tags

Return Values

  • string

Source Code

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) . ' />';
}

public static mailto( string $email [, string $title = NULL , array $attributes = NULL ] ) (defined in Kohana_HTML)

Creates an email (mailto:) anchor. Note that the title is not escaped, to allow HTML elements within links (images, etc).

echo HTML::mailto($address);

Parameters

  • string $email required - Email address to send to
  • string $title = NULL - Link text
  • array $attributes = NULL - HTML anchor attributes

Tags

Return Values

  • string

Source Code

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="&#109;&#097;&#105;&#108;&#116;&#111;&#058;' . $email . '"' . HTML::attributes($attributes) . '>' . $title . '</a>';
}

public static script( string $file [, array $attributes = NULL , mixed $protocol = NULL , boolean $index = bool FALSE ] ) (defined in Kohana_HTML)

Creates a script link.

echo HTML::script('media/js/jquery.min.js');

Parameters

  • 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

Tags

Return Values

  • string

Source Code

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>';
}

public static style( string $file [, array $attributes = NULL , mixed $protocol = NULL , boolean $index = bool FALSE ] ) (defined in Kohana_HTML)

Creates a style sheet link element.

echo HTML::style('media/css/screen.css');

Parameters

  • 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

Tags

Return Values

  • string

Source Code

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) . ' />';
}