Re: Re: Convert Smart Quotes to Sraight Quotes - Need Help!
| From: | Tom Rogers | Date: | Wed, 08 Sep 2004 23:52:21 +0000 |
| Subject: | Re: Re: Convert Smart Quotes to Sraight Quotes - Need Help! | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-196187@lists.php.net to get a copy of this message | ||
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