Hi,
Wednesday, September 8, 2004, 9:14:53 AM, you wrote:
M> Anyone! I'm out of online resources and answers. I guess this isn't possible
M> to do...
Here is a function/hack I use to clean up text for my php-gtk editor,
I still haven't found a clean solution yet but it may help.
function convert_text(&$text,&$content){
$count = 0;
$content = '';
$changed = false;
for($i=0,$length=strlen($text);$i<$length;$i++){
//echo ord($text[$i])."\n";
//echo $text[$i]."\n\n";
if(ord($text[$i]) > 193 && ord($text[$i]) < 224){
if(ord($text[$i+1]) > 127 && ord($text[$i+1]) < 192){
$changed = true;
//echo "found 2 byte control code ".ord($text[$i])." ".ord($text[$i+1]);
$str = $text[$i].$text[$i+1];
$rep = htmlentities($str,ENT_QUOTES,'UTF-8');
if(!empty($rep) && $str !== $rep){
$content .= $rep;
//echo " success-$rep-$rep2-$str\n";
}else{
$content .= '?';
//echo " failed-$rep2-$str\n";
}
$i += 1;
}else{
$content .= $text[$i];
echo "Oddball 2 byte ".ord($text[$i])." ".ord($text[$i+1])."\n";
}
}
elseif(ord($text[$i]) > 223 && ord($text[$i]) < 240){
if(ord($text[$i+1]) > 127 && ord($text[$i+1]) < 192){
if(ord($text[$i+2]) > 127 && ord($text[$i+2]) < 192){
$changed = true;
//echo "found 3 byte control code ".ord($text[$i])." ".ord($text[$i+1])."
".ord($text[$i+2]);
$str = $text[$i].$text[$i+1].$text[$i+2];
$rep = htmlentities($str,ENT_QUOTES,'UTF-8');
if(!empty($rep) && $str !== $rep){
$content .= $rep;
//echo " success-$rep-\n";
}else{
$content .= '?';
//echo " failed\n";
}
$i += 2;
}else{
$content .= $text[$i];
echo "Oddball 3 byte-3 ".ord($text[$i])." ".ord($text[$i+1])."
".ord($text[$i+2])."\n";
}
}else{
$content .= $text[$i];
echo "Oddball 3 byte-2 ".ord($text[$i])." ".ord($text[$i+1])."
".ord($text[$i+2])."\n";
}
}else{
$content .= $text[$i];
}
}
return $changed;
}
//Usage
$text = "String with quotes"; //original
$content = ''; //result
if(convert_text($text,$content)){
echo $content;
}else{
echo $text;
}
--
regards,
Tom
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php