13-09-2005, 20:10
|
|
|
חבר מתאריך: 12.08.04
הודעות: 993
|
|
לבנתיים עשיתי משהוא
בס"ד
מי שנתקל בבעיה שלי יכול להשתמש בקודים שעשיתי
זה הקודים שעשיתי בשביל לבדוק שאין באגים
קוד:
$conv=new Conv();
$str='ùìåí to ìê'.chr(127+45).'ùìåí to ìê';//"ù-ìåí t-o ì-ê".chr(127+45);
echo 'Orignal: '.$str.'<br>';
$tmp=$conv->conv_heb($str);
echo 'Converted: '.$tmp.'<br>';
echo 'Converted Back: '.$conv->conv_heb_back($tmp);
וזה המחלקה שבניתי
קוד:
define(ConvHebChr,'-');
class Conv
{
function Down($str)
{
if($str==ConvHebChr)
return ConvHebChr.ConvHebChr;
else
return chr(ord($str)-128);
}
function Up($str)
{
return chr(ord($str)+128);
}
function conv_heb($str)
{
$size=strlen($str);
$ret='';
$inheb=false;
for($l=0;$l<$size;$l++)
{
$chr=$str[$l];
if($chr==ConvHebChr)
{
$ret.=$chr.$chr;
continue;
}
if($inheb)
{
if(ord($chr)<128)
{
$inheb=false;
$ret.=ConvHebChr.' '.$chr;
}else
$ret.=$this->Down($chr);
}else
{
if(ord($chr)>=128)
{
$inheb=true;
$ret.=ConvHebChr.$this->Down($chr);
}else
$ret.=$chr;
}
}
return $ret;
}
function conv_heb_back($str)
{
$size=strlen($str);
$inheb=false;
$ret='';
$tmp=chr(ord(ConvHebChr)-128);
for($l=0;$l<$size;$l++)
{
$chr=$str[$l];
if($inheb)
{
if($chr==$tmp&&$str[$l+1]==$tmp)
{
$l++;
$ret.=$this->Up($chr);
continue;
}elseif($chr==ConvHebChr)
$inheb=false;
$ret.=$this->Up($chr);
}else
{
if($chr==ConvHebChr&&$str[$l+1]==ConvHebChr)
$ret.=ConvHebChr;
elseif($chr==ConvHebChr)
$inheb=true;
else
$ret.=$chr;
}
}
return $ret;
}
}
|