<!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.0b1</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>