| 
<?php
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // FILE NAME :  Biblio_string.inc.php                                                                     //
 // LANGUAGE  :  PHP                                                                                       //
 // AUTHOR    :  Julien PACHET                                                                             //
 // EMAIL     :  j|u|l|i|e|n| [@] |p|a|c|h|e|t.c|o|m                                                       //
 // VERSION   :  1.0                                                                                       //
 // CREATION  :  05/11/2003                                                                                //
 // LICENCE   :  GNU/GPL                                                                                   //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // What the library does:                                                                                 //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // * Help manipulate strings                                                                               //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Changelog:                                                                                             //
 // ----------                                                                                             //
 //  Date        Version   Actions                                                                         //
 // ------------------------------------------------------------------------------------------------------ //
 //  05/11/2003  1.0       Tested & Final version                                                          //
 //  29/02/2004  1.1       new function string_nearest                                                     //
 //  19/02/2004  1.15      function string_nearest now return the entire tab, sorted by nearest value      //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Need to work:                                                                                          //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // * other file:                                                                                          //
 //   * biblio_array.inc.php: help managing arrays                                                         //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 require_once("biblio_array.inc.php");
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Declaration                                                                                            //
 // -----------                                                                                            //
 // string_alternative($n,$if_0,$if_1,$if_n)                                                               //
 // string_piece($str,$a,$b)                                                                               //
 // string_add_right($str,$padding,$total_length)                                                          //
 // string_add_left($str,$padding,$total_length)                                                           //
 // string_part($separator,$str,$index)                                                                    //
 // string_surround($text,$pre,$post)                                                                      //
 // string_nearest($tab,$search)                                                                                                                  //
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 function string_alternative($n,$if_0,$if_1,$if_n) {
 /**
 * string_alternative()    : return $if_0, $if_1 or $if_n from the value of $n
 *
 * @param $n
 * @param $if_0                    : string to return if $n=0
 * @param $if_1                    : string to return if $n=1
 * @param $if_n                    : string to return if $n>1
 * @return
 */
 if ($n==0)    return $if_0;
 if ($n==1)    return $if_1;
 if ($n>1)        return $if_n;
 }
 
 function string_piece($str,$a,$b) {
 /**
 * string_piece()        : cut the string for a number to b number of character
 *
 * @param $str            : string to process
 * @param $a                : start character
 * @param $b                : final character
 * @return
 */
 return substr($str,$a,$b-$a+1);
 }
 
 function string_add_right($str,$padding,$total_length) {
 /**
 * string_add_left()            : cut $str if it's too long and add $padding character after to get the total length
 *
 * @param $str                         : string to process
 * @param $padding                 : the character(s)to use
 * @param $total_length     : the final size to have
 * @return
 */
 $temp="";
 if (strlen($str)>$total_length)
 $temp=copyab($str,0,$total_length-1);
 return $temp.str_repeat($padding,$total_length-strlen($temp));
 }
 
 function string_add_left($str,$padding,$total_length) {
 /**
 * string_add_left()            : cut $str if it's too long and add $padding character before to get the total length
 *
 * @param $str                         : string to process
 * @param $padding                 : the character(s)to use
 * @param $total_length     : the final size to have
 * @return
 */
 $nb=strlen($str);
 $temp=($nb>$total_length)?copyab($str,0,$total_length-1):"";
 return  str_repeat($padding,$total_length - $nb).$str;
 }
 
 function string_part($separator,$str,$index) {
 /**
 * string_part()            : return the # part separated by $separator
 *
 * @param $separator    : the separator
 * @param $str                : the string to cut
 * @param $index            : the number of part to return
 * @return
 */
 $temp=explode($separator,$str);
 if (($index>=0)&&($index<count($temp)))
 return $temp[$index];
 else
 return false;
 }
 
 function string_surround($text,$pre,$post) {
 /**
 * string_surround()    : surround the text by $pre et $post
 *
 * @param $text                : $text to surround
 * @param $pre                : text to put before
 * @param $post                : text to put after
 * @return
 */
 return $pre.$text.$post;
 }
 
 function string_nearest($tab,$search) {
 /**
 * string_nearest()    : find index of nearest item in array $tab using levenshtein function with
 *                      value 1 for insert,
 *                      value 2 for replace,
 *                      value 4 for delete
 *
 * @param $tab        : $array of value
 * @param $search     : item to search
 * @return
 */
 
 foreach ($tab as $k=>$v)
 $temp1[]=array("value"=>$v,"score"=>levenshtein($v,$search,1,2,4));
 $res=array_2D_transpose(array_2D_sort($temp1,"score","ASC"));
 return $res["value"];
 }
 
 ?>
 |