<?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"];
}
?>
|