/**
  * @fn	convert
  * @memberof Converter
  * @brief	Public function to convert encoding of text contents.
  * @param	$text	Source text content to convert.
  * @param	$options	Options array
  * 						Available Options -
  * 							-# output (Output encoding - default is myanmar3)
  * 							-# input_font (Input encoding)
  * 							-# encoding (encoding type - ascii or utf8 - default is utf8 or none)
  * 							-# spelling_check (Enable spelling checking when converting ascii fonts.)
  * 							-# text-only (Source content is plain text or other format such as html, php etc. - default is false)
  * 							-# en_zwsp (enable or disable adding Zero-Width-Space in converted result.)
  * 							-# exceptions (commas seperated list of words or phrase to ignore from conversion process.)
  * 							-# suggestion (enable to use user suggested words list.)
  * 
  * @returns	string $this->text	Return converted content.
  */
 public function convert($text, $options = array())
 {
     foreach ($options as $option_name => $option_value) {
         ${$option_name} = $option_value;
         //extract $options and set $option_name as variable name and $option_value as variable value.
     }
     if ($input_font === '' || $input_font == 'auto') {
         /**
          * @var $input 
          */
         $input = $this->enc_test($text);
     } else {
         /**
          * @var $input 
          */
         $input = $input_font;
     }
     /**
      * @var $ext_dir 
      */
     $ext_dir = 'ext/';
     $rules_dir = 'rules/' . $output;
     /**
      * @var $ext_file 
      */
     if (isset($encoding) && $encoding != '') {
         $ext_file = $input . '-rules-' . $encoding . '.php';
     } else {
         $ext_file = $input . '-rules.php';
     }
     if (file_exists($this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file)) {
         require $this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file;
         include $this->ROOT_DIR . $ext_dir . $rules_dir . '/correction.php';
         include $this->ROOT_DIR . $ext_dir . $rules_dir . '/zwsp.php';
     } else {
         $correction = array();
         $final_text = $this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file . " Fatal Error: Your converting rules file cannot be found!\nFile is missing or never existed. Try another choice or contact developer!";
         //return ;
     }
     if (!isset($order)) {
         /**
          * @var array $order 	Character ordering rules array.
          */
         $order = array();
         //if $order is not defined, set it to empty array.
     }
     /**
      * @var bool $en_zwsp	enable/disable adding zwsp. 
      */
     if ($en_zwsp == true) {
         /**
          * @var $final_regex_array 
          */
         $final_regex_array = array_merge_recursive($order, $correction, $zwsp);
         //merge all defined regular expression arrays.
     } else {
         /**
          * @var $final_regex_array 
          */
         $final_regex_array = array_merge_recursive($order, $correction);
         //merge all defined regular expression arrays without zwsp array.
     }
     if ($input === $output) {
         foreach ($final_regex_array as $key => $value) {
             /**
              * @var $final_text 
              */
             $final_text = preg_replace('/' . $key . '/u', $value, $text);
         }
     } else {
         if (isset($conv_rules)) {
             if ($encoding == 'ascii') {
                 /**
                  * @fn	trim_value
                  * @brief	
                  * @param	$value 
                  * @returns	
                  */
                 function trim_value(&$value)
                 {
                     /**
                      * @var $value 
                      */
                     $value = trim($value);
                 }
                 /**
                  * @fn	ucwords_value
                  * @brief	
                  * @param	$value 
                  * @returns	
                  */
                 function ucwords_value(&$value)
                 {
                     /**
                      * @var $value 
                      */
                     $value = ucwords($value);
                 }
                 /**
                  * @fn	space_on_short_words
                  * @brief	
                  * @param	$value 
                  * @returns	
                  */
                 function space_on_short_words(&$value)
                 {
                     /**
                      * @var $value 
                      */
                     $value = preg_replace('/^[\\d\\w]{1,3}$/u', ' $0 ', $value);
                 }
                 if (isset($spelling_check) && false !== $spelling_check) {
                     /**
                      * @var $stripped_text 
                      */
                     $stripped_text = strip_tags($text);
                     /**
                      * @var $paragraph 
                      */
                     $paragraph = preg_split("/[\\s,]+/s", $stripped_text);
                     array_walk($paragraph, 'trim_value');
                     /**
                      * @var $words_array 
                      */
                     $words_array = array_unique($paragraph);
                     array_multisort($words_array);
                     if (function_exists('enchant_broker_init')) {
                         /**
                          * @var $tag 
                          */
                         $tag = 'en_US';
                         /**
                          * @var $r 
                          */
                         $r = enchant_broker_init();
                         /**
                          * @var $bprovides 
                          */
                         $bprovides = enchant_broker_describe($r);
                         /**
                          * @var $dicts 
                          */
                         $dicts = enchant_broker_list_dicts($r);
                         if (enchant_broker_dict_exists($r, $tag)) {
                             /**
                              * @var $d 
                              */
                             $d = enchant_broker_request_dict($r, $tag);
                             /**
                              * @var $dprovides 
                              */
                             $dprovides = enchant_dict_describe($d);
                             foreach ($words_array as $word) {
                                 if (!empty($word)) {
                                     /**
                                      * @var $wordcorrect 
                                      */
                                     $wordcorrect = enchant_dict_check($d, $word);
                                     if ($wordcorrect) {
                                         $word = preg_replace('/^\\d+$/u', '"$0"', $word);
                                         $word = preg_replace('/^[\\d\\w]{1,3}$/u', ' $0 ', $word);
                                         $english_words_array[$word] = $word;
                                     }
                                 }
                             }
                             enchant_broker_free_dict($d);
                         }
                         enchant_broker_free($r);
                     } else {
                         include $this->ROOT_DIR . $ext_dir . 'dic/dictionary_array.php';
                         array_walk($words_array, 'space_on_short_words');
                         foreach ($words_array as $word) {
                             if (!empty($word)) {
                                 /**
                                  * @var $plural_ies 
                                  */
                                 $plural_ies = preg_match('/(\\w+)(ies)|(\\w+)(s)/', $word, $plural_match_ies);
                                 if (!empty($plural_match_ies)) {
                                     array_walk($plural_match_ies, 'space_on_short_words');
                                     if ($plural_match_ies[2] == ' ies ') {
                                         /**
                                          * @var $singular 
                                          */
                                         $singular = $plural_match_ies[1] . 'y';
                                     } elseif ($plural_match_ies[4] == ' s ') {
                                         /**
                                          * @var $singular 
                                          */
                                         $singular = $plural_match_ies[3];
                                     }
                                     if (in_array($singular, $dictionary) || in_array(strtolower($singular), $dictionary)) {
                                         $plural_array[$plural_match_ies[0]] = $plural_match_ies[0];
                                     }
                                 }
                                 if (in_array($word, $dictionary) || in_array(strtolower($word), $dictionary)) {
                                     $english_words_array[$word] = $word;
                                 }
                             }
                         }
                     }
                     /**
                      * @var $english_words 
                      */
                     $english_words = array();
                     if (isset($english_words_array) && !empty($english_words_array)) {
                         /**
                          * @var $english_words 
                          */
                         $english_words = $english_words_array;
                     }
                     if (isset($plural_array) && !empty($plural_array)) {
                         /**
                          * @var $english_words 
                          */
                         $english_words = array_merge($english_words, $plural_array);
                     }
                     /**
                      * @var $english_words 
                      */
                     $english_words = array_unique($english_words);
                 }
                 /**
                  * @var $generated_array 
                  */
                 $generated_array = array();
                 if (true !== $text_only) {
                     preg_match_all('/<(.*)>/uU', $text, $html_tags);
                     foreach ($html_tags[0] as $html_tag) {
                         if (!empty($html_tag)) {
                             $generated_array[$html_tag] = $html_tag;
                         }
                     }
                     preg_match_all('/<(style|script)(.*)<\\/(style|script)>/uUs', $text, $script_tags);
                     foreach ($script_tags[0] as $script_tag) {
                         if (!empty($script_tag)) {
                             $generated_array[$script_tag] = $script_tag;
                         }
                     }
                 }
                 /**
                  * @var $user_content_array 
                  */
                 $user_content_array = array();
                 if (isset($exceptions)) {
                     /**
                      * @var $exceps_array 
                      */
                     $exceps_array = explode(',', $exceptions);
                     if (!empty($exceps_array)) {
                         foreach ($exceps_array as $ignore_list) {
                             if (!empty($ignore_list) && strlen($ignore_list) > 4) {
                                 $generated_array[$ignore_list] = $ignore_list;
                                 $user_content_array[] = $ignore_list;
                             }
                         }
                     }
                 }
                 if (isset($suggested) && true === $suggested) {
                     if (file_exists($this->ROOT_DIR . $ext_dir . 'dic/userdic.dic')) {
                         /**
                          * @var $user_dic 
                          */
                         $user_dic = file($this->ROOT_DIR . $ext_dir . 'dic/userdic.dic', FILE_SKIP_EMPTY_LINES);
                         array_walk($user_dic, 'trim_value');
                         foreach ($user_dic as $user_word) {
                             if (!empty($user_word)) {
                                 $generated_array[$user_word] = $user_word;
                                 $user_content_array[] = $user_word;
                             }
                         }
                     }
                 }
                 if (!empty($user_content_array)) {
                     /**
                      * @var $user_content 
                      */
                     $user_content = "";
                     array_walk($user_content_array, 'trim_value');
                     asort($user_content_array);
                     /**
                      * @var $user_content_array 
                      */
                     $user_content_array = array_unique($user_content_array);
                     foreach ($user_content_array as $phrase) {
                         $user_content .= "{$phrase}\n";
                     }
                     /**
                      * @var $userdic_file 
                      */
                     $userdic_file = $this->ROOT_DIR . $ext_dir . 'dic/userdic.dic';
                     /**
                      * @var $uaf 
                      */
                     $uaf = fopen($userdic_file, 'w') or die("File is not writable or directory does not exist.");
                     fwrite($uaf, $user_content);
                     fclose($uaf);
                 }
                 /**
                  * @var $conv_array 
                  */
                 $conv_array = $conv_rules;
                 if (!empty($generated_array)) {
                     /**
                      * @var $conv_array 
                      */
                     $conv_array = array_merge($generated_array, $conv_array);
                 }
                 if (isset($english_words) && !empty($english_words)) {
                     /**
                      * @var $conv_array 
                      */
                     $conv_array = array_merge($english_words, $conv_array);
                 }
                 /**
                  * @var $final_text 
                  */
                 $final_text = strtr($text, $conv_array);
             } else {
                 /**
                  * @var $final_text 
                  */
                 $final_text = strtr($text, $conv_rules);
             }
             foreach ($final_regex_array as $key => $value) {
                 $reg_count = 0;
                 /**
                  * @var $final_text 
                  */
                 $final_text = preg_replace('/' . $key . '/us', $value, $final_text, -1, $reg_count);
                 //	print($reg_count.'<br>');
             }
         } else {
             foreach ($final_regex_array as $key => $value) {
                 $reg_count = 0;
                 /**
                  * @var $final_text 
                  */
                 $final_text = preg_replace('/' . $key . '/us', $value, $text, -1, $reg_count);
                 //	print($reg_count.'<br>');
             }
         }
     }
     /**
      * @var $text 
      */
     $this->text = $final_text;
     return $this->text;
 }
 /**
  * Describes current dictionary
  */
 public function describe()
 {
     return $this->isLoaded() ? enchant_dict_describe($this->dict) : false;
 }
Example #3
0
<?php

$tag = 'en_US';
$r = enchant_broker_init();
$bprovides = enchant_broker_describe($r);
echo "Current broker provides the following backend(s):\n";
print_r($bprovides);
if (enchant_broker_dict_exists($r, $tag)) {
    $d = enchant_broker_request_dict($r, $tag);
    $dprovides = enchant_dict_describe($d);
    echo "dictionary {$tag} provides:\n";
    $spellerrors = enchant_dict_check($d, "soong");
    print_r($dprovides);
    echo "found {$spellerrors} spell errors\n";
    if (spellerrors) {
        $suggs = enchant_dict_suggest($d, "soong");
        echo "Suggestions for 'soong':";
        print_r($suggs);
    }
    enchant_broker_free_dict($d);
} else {
}
enchant_broker_free($r);