<!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="../scripts/nav.js"></script>
<script type="text/javascript" src="../scripts/prototype.lite.js"></script>
<script type="text/javascript" src="../scripts/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.4.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Full Table of Contents</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>
$str = "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>
$str = "Here is a nice text string consisting of eleven words.";<br />
<br />
$string = char_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 dependance 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>
$str = "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>