Modules

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-2010 Kohana Team
license
http://kohanaframework.org/license

Class declared in SYSPATH/classes/kohana/html.php on line 12.

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 $windowed_urls

automatically target external URLs to a new window?

bool FALSE

Methods

public static anchor( string $uri [, string $title = NULL , array $attributes = NULL , string $protocol = NULL ] ) (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
  • string $protocol = NULL - Use a specific protocol

Tags

Return Values

  • string

Source Code

public static function anchor($uri, $title = NULL, array $attributes = NULL, $protocol = NULL)
{
	if ($title === NULL)
	{
		// Use the URI as the title
		$title = $uri;
	}

	if ($uri === '')
	{
		// Only use the base URL
		$uri = URL::base(FALSE, $protocol);
	}
	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] !== '#')
		{
			// Make the URI absolute for non-id anchors
			$uri = URL::site($uri, $protocol);
		}
	}

	// 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 = array();
	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;
		}

		// Add the attribute value
		$compiled .= ' '.$key.'="'.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 email( string $email ) (defined in Kohana_HTML)

Generates an obfuscated version of an email address. Helps prevent spam robots from finding email addresses.

echo HTML::email($address);

Parameters

  • string $email required - Email address

Tags

Return Values

  • string

Source Code

public static function email($email)
{
	// Make sure the at sign is always obfuscated
	return str_replace('@', '&#64;', HTML::obfuscate($email));
}

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 , string $protocol = NULL ] ) (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
  • string $protocol = NULL - Non-default protocol, eg: ftp

Tags

Return Values

  • string

Source Code

public static function file_anchor($file, $title = NULL, array $attributes = NULL, $protocol = NULL)
{
	if ($title === NULL)
	{
		// Use the file name as the title
		$title = basename($file);
	}

	// Add the file link to the attributes
	$attributes['href'] = URL::base(FALSE, $protocol).$file;

	return '<a'.HTML::attributes($attributes).'>'.$title.'</a>';
}

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

Creates a image link.

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

Parameters

  • string $file required - File name
  • array $attributes = NULL - Default attributes
  • unknown $index = bool FALSE

Tags

Return Values

  • string

Source Code

public static function image($file, array $attributes = NULL, $index = FALSE)
{
	if (strpos($file, '://') === FALSE)
	{
		// Add the base URL
		$file = URL::base($index).$file;
	}

	// 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)
{
	// Obfuscate email address
	$email = HTML::email($email);

	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 obfuscate( string $string ) (defined in Kohana_HTML)

Generates an obfuscated version of a string. Text passed through this method is less likely to be read by web crawlers and robots, which can be helpful for spam prevention, but can prevent legitimate robots from reading your content.

echo HTML::obfuscate($text);

Parameters

  • string $string required - String to obfuscate

Tags

  • Since - 3.0.3

Return Values

  • string

Source Code

public static function obfuscate($string)
{
	$safe = '';
	foreach (str_split($string) as $letter)
	{
		switch (rand(1, 3))
		{
			// HTML entity code
			case 1:
				$safe .= '&#'.ord($letter).';';
			break;

			// Hex character code
			case 2:
				$safe .= '&#x'.dechex(ord($letter)).';';
			break;

			// Raw (no) encoding
			case 3:
				$safe .= $letter;
		}
	}

	return $safe;
}

public static script( string $file [, array $attributes = 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
  • boolean $index = bool FALSE - Include the index page

Tags

Return Values

  • string

Source Code

public static function script($file, array $attributes = NULL, $index = FALSE)
{
	if (strpos($file, '://') === FALSE)
	{
		// Add the base URL
		$file = URL::base($index).$file;
	}

	// 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 , 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
  • boolean $index = bool FALSE - Include the index page

Tags

Return Values

  • string

Source Code

public static function style($file, array $attributes = NULL, $index = FALSE)
{
	if (strpos($file, '://') === FALSE)
	{
		// Add the base URL
		$file = URL::base($index).$file;
	}

	// Set the stylesheet link
	$attributes['href'] = $file;

	// Set the stylesheet rel
	$attributes['rel'] = 'stylesheet';

	// Set the stylesheet type
	$attributes['type'] = 'text/css';

	return '<link'.HTML::attributes($attributes).' />';
}