<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400});
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Code Igniter User Guide Version 1.5.2</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Text Helper
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Text Helper</h1>

<p>The Text Helper file contains functions that assist in working with text.</p>


<h2>Loading this Helper</h2>

<p>This helper is loaded using the following code:</p>
<code>$this->load->helper('text');</code>

<p>The following functions are available:</p>


<h2>word_limiter()</h2>

<p>Truncates a string to the number of <strong>words</strong> specified.  Example:</p>

<code>
$string = "Here is a nice text string consisting of eleven words.";<br />
<br />
$string = word_limiter($string, 4);<br /><br />

// Returns:  Here is a nice&#8230;
</code>

<p>The third parameter is an optional suffix added to the string.  By default it add an ellipsis.</p>


<h2>character_limiter()</h2>

<p>Truncates a string to the number of <strong>characters</strong> specified.  It maintains the integrity
of words so the character count may be slightly more or less then what you specify. Example:</p>

<code>
$string = "Here is a nice text string consisting of eleven words.";<br />
<br />
$string = character_limiter($string, 20);<br /><br />

// Returns:  Here is a nice text string&#8230;
</code>

<p>The third parameter is an optional suffix added to the string.  By default it add an ellipsis.</p>



<h2>ascii_to_entities()</h2>

<p>Converts ASCII values to character entities, including high ASCII and MS Word characters that can cause problems when used in a web page,
so that they can be shown consistently regardless of browser settings or stored reliably in a database.
There is some dependence on your server's supported character sets, so it may not be 100% reliable in all cases, but for the most
part it should correctly identify characters outside the normal range (like accented characters). Example:</p>

<code>$string = ascii_to_entities($string);</code>


<h2>entities_to_ascii()</h2>

<p>This function does the opposite of the previous one; it turns character entities back into ASCII.</p>


<h2>word_censor()</h2>

<p>Enables you to censor words within a text string.  The first parameter will contain the original string.  The
second will contain an array of words which you disallow.  The third (optional) parameter can contain a replacement value
for the words.  If not specified they are replaced with pound signs: ####.  Example:</p>

<code>
$disallowed = array('darn', 'shucks', 'golly', 'phooey');<br />
<br />
$string = word_censor($string, $disallowed, 'Beep!');</code>


<h2>highlight_code()</h2>

<p>Colorizes a string of code (PHP, HTML, etc.).  Example:</p>

<code>$string = highlight_code($string);</code>

<p>The function uses PHP's highlight_string() function, so the colors used are the ones specified in your php.ini file.</p>


<h2>highlight_phrase()</h2>

<p>Will highlight a phrase within a text string.  The first parameter will contain the original string, the second will
contain the phrase you wish to highlight.  The third and fourth parameters will contain the opening/closing HTML tags
you would like the phrase wrapped in.  Example:</p>

<code>
$string = "Here is a nice text string about nothing in particular.";<br />
<br />
$string = highlight_phrase($string, "nice text", '&lt;span style="color:#990000">', '&lt;/span>');
</code>

<p>The above text returns:</p>

<p>Here is a <span style="color:#990000">nice text</span> string about nothing in particular.</p>



<h2>word_wrap()</h2>

<p>Wraps text at the specified <strong>character</strong> count while maintaining complete words.  Example:</p>

<code>$string = "Here is a simple string of text that will help us demonstrate this function.";<br />
<br />
echo word_wrap($string, 25);<br />
<br />
// Would produce:<br />
<br />
Here is a simple string<br />
of text that will help<br />
us demonstrate this<br />
function</code>




</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="string_helper.html">String Helper</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="typography_helper.html">Typography Helper</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>