diff options
author | Derek Jones <derek.jones@ellislab.com> | 2010-03-05 17:29:30 +0100 |
---|---|---|
committer | Derek Jones <derek.jones@ellislab.com> | 2010-03-05 17:29:30 +0100 |
commit | daf9c01a2c25515eea87fb4f4c905f49c30d0214 (patch) | |
tree | d14be99b84071c0c356de38dd8d8cf381825b79a /system | |
parent | 1e1419229ea85b9928f2b0f7d2bad1f5cefc3946 (diff) |
added convert_accented_characters() function to Text Helper
Diffstat (limited to 'system')
-rw-r--r-- | system/application/config/foreign_chars.php | 64 | ||||
-rw-r--r-- | system/helpers/text_helper.php | 48 |
2 files changed, 107 insertions, 5 deletions
diff --git a/system/application/config/foreign_chars.php b/system/application/config/foreign_chars.php new file mode 100644 index 000000000..8d70a2f62 --- /dev/null +++ b/system/application/config/foreign_chars.php @@ -0,0 +1,64 @@ +<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); +/* +| ------------------------------------------------------------------- +| Foreign Characters +| ------------------------------------------------------------------- +| This file contains an array of foreign characters for transliteration +| conversion used by the Text helper +| +*/ +$foreign_characters = array('223' => "ss", // ß + '224' => "a", + '225' => "a", + '226' => "a", + '229' => "a", + '227' => "ae", + '230' => "ae", + '228' => "ae", + '231' => "c", + '232' => "e", // è + '233' => "e", // é + '234' => "e", // ê + '235' => "e", // ë + '236' => "i", + '237' => "i", + '238' => "i", + '239' => "i", + '241' => "n", + '242' => "o", + '243' => "o", + '244' => "o", + '245' => "o", + '246' => "oe", // ö + '249' => "u", + '250' => "u", + '251' => "u", + '252' => "ue", // ü + '255' => "y", + '257' => "aa", + '269' => "ch", + '275' => "ee", + '291' => "gj", + '299' => "ii", + '311' => "kj", + '316' => "lj", + '326' => "nj", + '353' => "sh", + '363' => "uu", + '382' => "zh", + '256' => "aa", + '268' => "ch", + '274' => "ee", + '290' => "gj", + '298' => "ii", + '310' => "kj", + '315' => "lj", + '325' => "nj", + '352' => "sh", + '362' => "uu", + '381' => "zh", + ); + + +/* End of file foreign_chars.php */ +/* Location: ./system/application/config/foreign_chars.php */
\ No newline at end of file diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php index 1e672937b..477260216 100644 --- a/system/helpers/text_helper.php +++ b/system/helpers/text_helper.php @@ -87,7 +87,7 @@ if ( ! function_exists('character_limiter')) { return $str; } - + $out = ""; foreach (explode(' ', trim($str)) as $val) { @@ -136,7 +136,7 @@ if ( ! function_exists('ascii_to_entities')) $out .= '&#'.array_shift($temp).';'; $count = 1; } - + $out .= $str[$i]; } else @@ -248,7 +248,7 @@ if ( ! function_exists('word_censor')) // \w, \b and a few others do not match on a unicode character // set for performance reasons. As a result words like über // will not match on a word boundary. Instead, we'll assume that - // a bad word will be bookended by any of these characters. + // a bad word will be bookeneded by any of these characters. $delim = '[-_\'\"`(){}<>\[\]|!?@#%&,.:;^~*+=\/ 0-9\n\r\t]'; foreach ($censored as $badword) @@ -352,6 +352,44 @@ if ( ! function_exists('highlight_phrase')) return $str; } } + +// ------------------------------------------------------------------------ + +/** + * Convert Accented Foreign Characters to ASCII + * + * @access public + * @param string the text string + * @return string + */ +if ( ! function_exists('convert_accented_characters')) +{ + function convert_accented_characters($match) + { + if ( ! file_exists(APPPATH.'config/foreign_chars'.EXT)) + { + return $match; + } + + include APPPATH.'config/foreign_chars'.EXT; + + if ( ! isset($foreign_characters)) + { + return $match; + } + + $ord = ord($match['1']); + + if (isset($foreign_characters[$ord])) + { + return $foreign_characters[$ord]; + } + else + { + return $match['1']; + } + } +} // ------------------------------------------------------------------------ @@ -431,7 +469,7 @@ if ( ! function_exists('word_wrap')) // word into smaller chunks so we'll add it back to our current line if ($temp != '') { - $output .= $temp . "\n" . $line; + $output .= $temp."\n".$line; } else { @@ -456,7 +494,7 @@ if ( ! function_exists('word_wrap')) return $output; } } - + /* End of file text_helper.php */ /* Location: ./system/helpers/text_helper.php */
\ No newline at end of file |