KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /home/queenjbs/www/test/tfpdf/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/queenjbs/www/test/tfpdf/lib/vncode.inc.php
<?php
/**
 * Su dung cho cac chuc nang lien quan den tieng Viet
 */

/**
 * @desc Code for convert UTF to VNI
 */
$chars_NCR_VNI = array(
	273=>'ñ', 272=>'Ñ', 225=>'aù', 224=>'aø', 7843=>'aû', 227=>'aõ', 7841=>'aï', 259=>'aê', 7855=>'aé',
	7857=>'aè', 7859=>'aú', 7861=>'aü', 7863=>'aë', 226=>'aâ', 7845=>'aá', 7847=>'aà', 7849=>'aå', 7851=>'aã',
	7853=>'aä', 233=>'eù', 232=>'eø', 7867=>'eû', 7869=>'eõ', 7865=>'eï', 234=>'eâ', 7871=>'eá', 7873=>'eà',
	7875=>'eå', 7877=>'eã', 7879=>'eä', 237=>'í', 236=>'ì', 7881=>'æ', 297=>'ó', 7883=>'ò', 243=>'où',
	242=>'oø', 7887=>'oû', 245=>'oõ', 7885=>'oï', 7899=>'ôù', 7901=>'ôø', 7903=>'ôû', 7905=>'ôõ', 7907=>'ôï',
	417=>'ô', 244=>'oâ', 7889=>'oá', 7891=>'oà', 7893=>'oå', 7895=>'oã', 7897=>'oä', 250=>'uù', 249=>'uø',
	7911=>'uû', 361=>'uõ', 7909=>'uï', 7913=>'öù', 7915=>'öø', 7917=>'öû', 7919=>'öõ', 7921=>'öï', 432=>'ö',
	253=>'yù', 7923=>'yø', 7927=>'yû', 7929=>'yõ', 7925=>'î', 193=>'AÙ', 192=>'AØ', 7842=>'AÛ', 195=>'AÕ',
	7840=>'AÏ', 258=>'AÊ', 7854=>'AÉ', 7856=>'AÈ', 7858=>'AÚ', 7860=>'AÜ', 7862=>'AË', 194=>'AÂ', 7844=>'AÁ',
	7846=>'AÀ', 7848=>'AÅ', 7850=>'AÃ', 7852=>'AÄ', 201=>'EÙ', 200=>'EØ', 7866=>'EÛ', 7868=>'EÕ', 7864=>'EÏ',
	202=>'EÂ', 7870=>'EÁ', 7872=>'EÀ', 7874=>'EÅ', 7876=>'EÃ', 7878=>'EÄ', 205=>'Í', 204=>'Ì', 7880=>'Æ',
	296=>'Ó', 7882=>'Ò', 211=>'OÙ', 210=>'OØ', 7886=>'OÛ', 213=>'OÕ', 7884=>'OÏ', 7898=>'ÔÙ', 7900=>'ÔØ',
	7902=>'ÔÛ', 7904=>'ÔÕ', 7906=>'ÔÏ', 416=>'Ô', 212=>'OÂ', 7888=>'OÁ', 7890=>'OÀ', 7892=>'OÅ', 7894=>'OÃ',
	7896=>'OÄ', 218=>'UÙ', 217=>'UØ', 7910=>'UÛ', 360=>'UÕ', 7908=>'UÏ', 431=>'Ö', 7912=>'ÖÙ', 7914=>'ÖØ',
	7916=>'ÖÛ', 7918=>'ÖÕ', 7920=>'ÖÏ', 221=>'YÙ', 7922=>'YØ', 7926=>'YÛ', 7928=>'YÕ', 7924=>'Î');
/**
 * @desc Code for convert UTF to VNO (tieng Viet ko dau)
 */
$chars_NCR_VN0 = array(
	273=>'d', 272=>'D', 225=>'a', 224=>'a', 7843=>'a', 227=>'a', 7841=>'a', 259=>'a', 7855=>'a',
	7857=>'a', 7859=>'a', 7861=>'a', 7863=>'a', 226=>'a', 7845=>'a', 7847=>'a', 7849=>'a', 7851=>'a',
	7853=>'a', 233=>'e', 232=>'e', 7867=>'e', 7869=>'e', 7865=>'e', 234=>'e', 7871=>'e', 7873=>'e',
	7875=>'e', 7877=>'e', 7879=>'e', 237=>'i', 236=>'i', 7881=>'i', 297=>'i', 7883=>'i', 243=>'o',
	242=>'o', 7887=>'o', 245=>'o', 7885=>'o', 7899=>'o', 7901=>'o', 7903=>'o', 7905=>'o', 7907=>'o',
	417=>'o', 244=>'o', 7889=>'o', 7891=>'o', 7893=>'o', 7895=>'o', 7897=>'o', 250=>'u', 249=>'u',
	7911=>'u', 361=>'u', 7909=>'u', 7913=>'u', 7915=>'u', 7917=>'u', 7919=>'u', 7921=>'u', 432=>'u',
	253=>'y', 7923=>'y', 7927=>'y', 7929=>'y', 7925=>'y', 193=>'A', 192=>'A', 7842=>'A', 195=>'A',
	7840=>'A', 258=>'A', 7854=>'A', 7856=>'A', 7858=>'A', 7860=>'A', 7862=>'A', 194=>'A', 7844=>'A',
	7846=>'A', 7848=>'A', 7850=>'A', 7852=>'A', 201=>'E', 200=>'E', 7866=>'E', 7868=>'E', 7864=>'E',
	202=>'E', 7870=>'E', 7872=>'E', 7874=>'E', 7876=>'E', 7878=>'E', 205=>'I', 204=>'I', 7880=>'I',
	296=>'I', 7882=>'I', 211=>'O', 210=>'O', 7886=>'O', 213=>'O', 7884=>'O', 7898=>'O', 7900=>'O',
	7902=>'O', 7904=>'O', 7906=>'O', 416=>'O', 212=>'O', 7888=>'O', 7890=>'O', 7892=>'O', 7894=>'O',
	7896=>'O', 218=>'U', 217=>'U', 7910=>'U', 360=>'U', 7908=>'U', 431=>'U', 7912=>'U', 7914=>'U',
	7916=>'U', 7918=>'U', 7920=>'U', 221=>'Y', 7922=>'Y', 7926=>'Y', 7928=>'Y', 7924=>'Y');

class VNCode {
	/**
	 *@return int
	 *@desc Tra ve phan tu str[index] va tang index len 1
	 */
	function _nextCode($str, &$index){
		if ($index >= strlen($str)) return 0;
		return ord($str[$index++]);
	}
	
	/**
	 * @return string
	 * @desc Doi chuoi tu dang UTF-8 sang dang Decimal
	 */
	function UTF8_NCR($str){
		$result = '';
		$len = strlen($str);
		for($i=0;$i<$len;){
			$code = VNCode::_nextCode($str,$i);
			if (($code & 0xF0) == 0xF0){//11110000, 4 byte
				$b1 = $code & 0x07; //111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b4 = $code & 0x3F; //111111
				$code = ((((($b1 << 6) | $b2) << 6) | $b3) << 6) | $b4;
				$result .= '&#'.$code.';';
			}elseif (($code & 0xE0) == 0xE0){//1110000, 3 byte
				$b1 = $code & 0x0F; //1111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = ((($b1 << 6) | $b2) << 6) | $b3;
				$result .= '&#'.$code.';';
			}elseif (($code & 0xC0) == 0xC0){//1100000, 2 byte
				$b1 = $code & 0x1F; //11111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = ($b1 << 6) | $b2;
				$result .= '&#'.$code.';';
			}else{
				$result .= chr($code);
			}
		}
		return $result;
	}
	
	/**
	 * @return string
	 * @desc Doi chuoi tu VNI sang khong dau Tieng Viet
	 */
	function VNI_VN0($s)
	{
		global $chars_NCR_VNI, $chars_NCR_VN0;
		foreach ($chars_NCR_VNI as $k => $si) {
			$s = str_replace($si,$chars_NCR_VN0[$k],$s);
		}
		return $s;
	}
	
	/**
	 * @return string
	 * @desc Doi chuoi tu dang UTF8 sang dang VNI
	 */
	function UTF8VNI($str){
		global $chars_NCR_VNI;
		$result = '';
		$len = strlen($str);
		for($i=0;$i<$len;){
			$code = VNCode::_nextCode($str,$i);
			if (($code & 0xF0) == 0xF0){//11110000, 4 byte
				$b1 = $code & 0x07; //111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b4 = $code & 0x3F; //111111
				$code = ((((($b1 << 6) | $b2) << 6) | $b3) << 6) | $b4;
				$result .= isset($chars_NCR_VNI[$code]) ? $chars_NCR_VNI[$code] : chr($code);
			}elseif (($code & 0xE0) == 0xE0){//1110000, 3 byte
				$b1 = $code & 0x0F; //1111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = ((($b1 << 6) | $b2) << 6) | $b3;
				$result .= isset($chars_NCR_VNI[$code]) ? $chars_NCR_VNI[$code] : chr($code);
			}elseif (($code & 0xC0) == 0xC0){//1100000, 2 byte
				$b1 = $code & 0x1F; //11111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = ($b1 << 6) | $b2;
				$result .= isset($chars_NCR_VNI[$code]) ? $chars_NCR_VNI[$code] : chr($code);
			}else{
				$result .= chr($code);
			}
		}
		return $result;
	}
	
	/**
	 * Convert UTF to VNO (tieng Viet ko dau)
	 */
	function UTF8VN0($str){
		global $chars_NCR_VN0;
		$result = '';
		$len = strlen($str);
		for($i=0;$i<$len;){
			$code = VNCode::_nextCode($str,$i);
			if (($code & 0xF0) == 0xF0){//11110000, 4 byte
				$b1 = $code & 0x07; //111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b4 = $code & 0x3F; //111111
				$code = ((((($b1 << 6) | $b2) << 6) | $b3) << 6) | $b4;
				$result .= isset($chars_NCR_VN0[$code]) ? $chars_NCR_VN0[$code] : '?';
			}elseif (($code & 0xE0) == 0xE0){//1110000, 3 byte
				$b1 = $code & 0x0F; //1111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = VNCode::_nextCode($str,$i);
				$b3 = $code & 0x3F; //111111
				$code = ((($b1 << 6) | $b2) << 6) | $b3;
				$result .= isset($chars_NCR_VN0[$code]) ? $chars_NCR_VN0[$code] : '?';
			}elseif (($code & 0xC0) == 0xC0){//1100000, 2 byte
				$b1 = $code & 0x1F; //11111
				$code = VNCode::_nextCode($str,$i);
				$b2 = $code & 0x3F; //111111
				$code = ($b1 << 6) | $b2;
				$result .= isset($chars_NCR_VN0[$code]) ? $chars_NCR_VN0[$code] : '?';
			}else{
				$result .= chr($code);
			}
		}
		return $result;
	}

	/**
	 * @return string
	 * @desc Doi chuoi tu dang Decimal sang dang UTF-8
	 */
	function NCR_VNI($str){
		global $chars_NCR_VNI;
		$str = trim($str);
		$len = strlen($str);
		$result = '';
		for($i=0;$i<$len;$i++){
			$n = '';
			if ($str[$i] == '&'){
				$k = $i+1;
				if ($k < $len && $str[$k] == '#'){
					$k++;
					while ($k < $len && is_numeric($str[$k]))
						$n .= $str[$k++];
					if ($k < $len && $str[$k]==';')
						$i = $k;
				}
			}
			if ($n!=''){
				$n = intval($n);
				$result .= isset($chars_NCR_VNI[$n]) ? $chars_NCR_VNI[$n] : '?';
			}else
			{
				$result .= $str[$i];
			}
		}
		return $result;
	}

	/**
	 * @return string
	 * @desc Doi chuoi tu dang Decimal sang dang UTF-8
	 */
	function NCR_UTF8($str){
		$len = strlen($str);
		$result = '';
		for($i=0;$i<$len;$i++){
			$n = '';
			if ($str[$i] == '&'){
				$k = $i+1;
				if ($k < $len && $str[$k] == '#'){
					$k++;
					while ($k < $len && is_numeric($str[$k]))
						$n .= $str[$k++];
					if ($k < $len && $str[$k]==';')
						$i = $k;
				}
			}
			if ($n!=''){
				$n = intval($n);
				$s = '';
				$first = 0;
				$mask = 0x80;
				while ($n>0){
					$byte = $n & 0x3F; //00111111
					$n = $n >> 6;
					if ($n) $s = chr($byte | 0x80).$s;
					$first = $first | $mask;
					$mask  = $mask >> 1;
				}
				$s = chr($first | $byte).$s;
				$result .= $s;
			}else
				$result .= $str[$i];
		}
		return $result;
	}

	/**
	 * @return int
	 * @desc Tra ve vi tri that cua chu cai thu index trong chuoi unicode UTF-8
	 */
	function indexUTF8($data, $index){
		$len = strlen($data);
		if ($len==0) return 0;
		for($i=0, $j=0;$i<$len && $j<$index;$j++){
			$code = ord($data{$i++});
			if (($code & 0xF0) == 0xF0){//11110000, 4 byte
				$i += 3;
			}elseif (($code & 0xE0) == 0xE0){//1110000, 3 byte
				$i += 2;
			}elseif (($code & 0xC0) == 0xC0){//1100000, 2 byte
				$i += 1;
			}
		}
		return ($i ? $i-1 : 0);
	}
	
	/**
	 * @return string
	 * @desc Correct a string UTF-8 (error cause by some char is cuted at the end)
	 */
	function correctUTF8($data){
		$len = strlen($data);
		if ($len>=3){
			$code = ord($data{$len-3});
			if (($code & 0xF0) == 0xF0) return substr($data,0,$len-3);
			$code = ord($data{$len-2});
			if (($code & 0xE0) == 0xE0) return substr($data,0,$len-2);
			$code = ord($data{$len-1});
			if (($code & 0xC0) == 0xC0) return substr($data,0,$len-1);
		}
		return $data;
	}
	
	/**
	 * @return string
	 * @desc Correct a string NCR (error cause by some char code >127 and < 255 isnot converted)
	 */
	function correctNCR($data){
		for ($i=128;$i<256;$i++)
			$data = str_replace(chr($i),"&#$i;",$data);
		return $data;
	}
	
	/**
	 * @return string
	 * @desc Cat mot string ngan lai de vua mot cot nho
	 */
	function trunstrword($str, $trunsize=0){
		$size = ($trunsize)? $trunsize : 20;
		if (strlen($str)<=$size) return $str;
		$len = strlen($str);
		for ($r=VNCode::indexUTF8($str,$size); $r<$len && $str[$r]!=' ' && $r<$size+10;$r++);
	
		$s2 = substr($str, 0, $r);
		if (strlen($s2)<strlen($str))
			$s2.='...';
		return $s2;
	}
	
	/**
	 * @return int
	 * @desc Tra ve vi tri that cua chu cai thu index trong chuoi unicode NCR
	 */
	function indexNCR($data, $index){
		$p = 0;
		$len = strlen($data);
		for($i=0;$i<$len && $p<$index;$i++){
			$p++;
			if ($data[$i] == '&'){
				$k = $i+1;
				if ($k<$len && $data[$k] == '#'){
					$k++;
					while ($k<$len && is_numeric($data[$k])) $k++;
					if ($k<$len && $data[$k]==';') $i = $k;
				}
			}
		}
		return $i;
	}
	
	/**
	 * @return int
	 * @desc Tra ve do dai chuoi unicode NCR
	 */
	function strlenNCR($data){
		$p = 0;
		$len = strlen($data);
		for($i=0;$i<$len;$i++){
			$p++;
			if ($data[$i] == '&'){
				$k = $i+1;
				if ($k<$len && $data[$k] == '#'){
					$k++;
					while ($k<$len && is_numeric($data[$k])) $k++;
					if ($k<$len && $data[$k]==';') $i = $k;
				}
			}
		}
		return $p;
	}
	/**
	 * Convert string in NCRx to UTF-8
	 * (NCRx has format --xxx; is an character which has ASCCI code is xxx)
	 */
	function NCRx_UTF8($str){
		$len = strlen($str);
		$result = '';
		$ln=0;
		for($i=0;$i<$len;$i++){
			$n = '';
			if ($str[$i] == '-'){
				$k = $i+1;
				if ($k < $len && $str[$k] == '-'){
					$k++;
					while ($k < $len && is_numeric($str[$k]))
						$n .= $str[$k++];
					if ($k < $len && $str[$k]==';')
						$i = $k;
				}
			}
			if ($n!=''){
				$n = intval($n);
				if ($n==13 || $n==10){
					$result .= $ln?'':'<br>';
					$ln = 1;
				}elseif ($n<128){
					$result .= chr($n);
					$ln = 0;
				}else{
					$s = '';
					$first = 0;
					$mask = 0x80;
					while ($n>0){
						$byte = $n & 0x3F; //00111111
						$n = $n >> 6;
						if ($n) $s = chr($byte | 0x80).$s;
						$first = $first | $mask;
						$mask  = $mask >> 1;
					}
					$s = chr($first | $byte).$s;
					$result .= $s;
					$ln = 0;
				}
			}else{
				$result .= $str[$i];
				$ln = 0;
			}
		}
		return $result;
	}
}
?>

Anon7 - 2021