<?php
class badLanguage
{
public static $f_arr=1;
public static $lastI=0;
public function utfCharToNumber($char) {
$i = 0;
$number = '';
while (isset($char{$i})) {
//使用{}將字元再分離,以取得中文字ascii
$number.= ord($char{$i});
++$i;
}
return $number;
}
public function _sortConf($ar1, $ar2){
if ($ar1<$ar2)
return true;
else
return false;
if (strlen($ar1)>strlen($ar2))
return true;
else
return false;
}
public function main($string,&$f_arr)
{
self::$f_arr=$f_arr;
$len=mb_strlen($string,"UTF-8");
$returnArr=array();
$str_arr=array();
for($i=0;$i<$len;$i++)
{
$c=mb_substr($string, $i,1,"UTF-8");
array_push($str_arr,$c);
$return=$this->bedLang($string,$c,$i);
if($return) array_push($returnArr, $return);
}
//print_r($returnArr);
foreach ($returnArr as &$value) {
for($k=$value['ind'];$k<$value['ind']+$value['len'];$k++)
$str_arr[$k]="✖";
}
return implode('',$str_arr);
}
private function bedLang($string,$c,$index)
{
$key=$this->utfCharToNumber($c);
$farr=self::$f_arr[$key];
if(false==isset($farr)) return;
$farrLen=sizeof($farr);
for($fI=0;$fI<$farrLen;$fI++)
{
$fStr=$farr[$fI];
$fStrLen=mb_strlen($fStr,"UTF-8");
if(($index+$fStrLen-1)<self::$lastI) return;
if(1==$fStrLen) return array('ind'=>$index,'len'=>1);
for($i=1;$i<$fStrLen;$i++)
{
$si=$i+$index;
$fC=mb_substr($fStr, $i,1,"UTF-8");
$sC=mb_substr($string, $si,1,"UTF-8");
if($fC!=$sC)
break;
}
if($i==$fStrLen)
{
self::$lastI=$index+$fStrLen-1;
return array('ind'=>$index,'len'=>$fStrLen);
}
}
}
}
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<TITLE>AZ.lib</TITLE>
</HEAD>
<?php
//filter list source
$source_arr=array(
'1920',
'ap',
'絕妙',
'運算',
'視訊',
'擴充',
'能力中',
'擴充能力中,取得最佳',
'擴充能',
'最佳平衡',
'920',
'運算效能',
'上視',
'電');
usort($source_arr,array("badLanguage", "_sortConf"));
$len=count($source_arr);
$_bL=new badLanguage();
$f_arr=array();
for($i=0;$i<$len;$i++)
{
$c=mb_substr($source_arr[$i], 0,1,"UTF-8");
$key=$_bL->utfCharToNumber($c);
$l=count($f_arr[$key]);
$f_arr[$key][$l]=$source_arr[$i];
}
echo $str="AP1920 輕薄的紙片型電腦,在絕妙的運算效能,精巧纖薄的外型設計,節能省電,即時的線上視訊與完整擴充能力中,取得最佳平衡的個人電腦,大大節省工作空間及提升工作效率。 ";
echo "</br>";
echo $_bL->main($str,$f_arr);
?>
真正在跑的時後 會先把濾字用的清單sort出來成一份參考清單
沒有留言:
張貼留言