<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Text Helper : CodeIgniter 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" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter 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_darker.jpg" width="154" height="43" 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>CodeIgniter User Guide Version 2.0.0</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://codeigniter.com/">CodeIgniter 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="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 adds 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, if undeclared this helper uses 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://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2010 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>