php dize garip karakterler kaldırarak

6 Cevap

Bu ben şu anda ne var

Php içine bir RSS beslemesi Çizim, rss feed ham xml okur:

Paul’s Confidence

I var php şimdiye kadar bu.

$newtitle = $item->title;
$newtitle = utf8_decode($newtitle);

Yukarıdaki döner;

Paul?s Confidence

I utf_decode kaldırırsanız, ben bu olsun

Paul’s Confidence

I str_replace çalıştığınızda;

$newtitle = str_replace("”", "", $newtitle);

Bu işe yaramazsa, i olsun;

Paul’s Confidence

Herhangi bir düşünce?

6 Cevap

Bu deneyin:

$newtitle = html_entity_decode($newtitle, ENT_QUOTES, "UTF-8")

Bu sayfayı çözüm göz değilse http://us2.php.net/manual/en/function.html-entity-decode.php

Ben sorunu çözüldü. Kısa bir düzeltme yerine, daha büyük bir sorun gibi görünüyor, ama çalışıyor.

$newtitle = str_replace('’', "'", $newtitle);

Ben de aynı sorunu ile başkalarına yardımcı olabilir bu yararlı snippit bulundu;

<?
$find[] = '“'; // left side double smart quote
$find[] = '”'; // right side double smart quote
$find[] = '‘'; // left side single smart quote
$find[] = '’'; // right side single smart quote
$find[] = '…'; // elipsis
$find[] = '—'; // em dash
$find[] = '–'; // en dash

$replace[] = '"';
$replace[] = '"';
$replace[] = "'";
$replace[] = "'";
$replace[] = "...";
$replace[] = "-";
$replace[] = "-";

$text = str_replace($find, $replace, $text);
?>

Teşekkürler zaman ve göz için herkes.

Evet bu benim için çalışmıyor. Bunun için çözüm nedir? - Vaichidrewar 22:29 12 Mart

HTML kafasına bu ekleyin (veya zaten orada varsa değiştirin):

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Bu str_replace() fonksiyonu düzgün yorumlanması olacaktır böylece UTF-8 "â € œ" gibi funny chars kodlar.

Yoksa bunu yapabilirsiniz:

ini_set('default_charset', 'utf-8');

Karakter kodlaması UTF-8 dışındaki PHP sunucu şey için ayar mı? Eğer öyleyse, bir nedeni vardır ya da UTF-8 değişti olabilir? Biz UTF-8 bizim veritabanında veri saklamak yok olsa da, ben web sunucusu karakteri UTF-8 ayar ayarlamak çözmek karakter kümesi sorunları yardımcı olacak gibi görünüyor bulduk.

Ben bu konuda başkalarının görüşler işitme ilgi duyarım ... Ben bizim mysql veritabanında Latin1 olarak sunulan veri depolama sırasında UTF-8 için web sunucusu ayarlayarak sorunları için kendimi kuruyorum ister. Ben veritabanı için Latin1 seçtim ama ne olduğunu hatırlamak için bir sebep olduğunu biliyorum. İlginçtir, bizim şu anki kurulum olmayan UTF-8 karakter girişi ve sonraki render için izin görünüyor ... o Latin1 saklanması tüm UTF-8 karakter sonraki çözme ve görüntülenmesini önlemek değil gibi görünüyor?

http://us.php.net/manual/en/function.html-entity-decode.php üzerine kadar okuyun

O & kolayca deşifre böylece sembol bir html kodudur.

Bu her zaman ne olursa olsun kodlama, çalışır benim işlevi:

FUNCTION RemoveBS($Str) {  
  $StrArr = STR_SPLIT($Str); $NewStr = '';
  FOREACH ($StrArr AS $Char) {    
    $CharNo = ORD($Char);
    IF ($CharNo == 163) { $NewStr .= $Char; CONTINUE; } // keep £ 
    IF ($CharNo > 31 && $CharNo < 127) {
      $NewStr .= $Char;    
    }
  }  
  RETURN $NewStr;
}

Nasıl çalışır:

echo RemoveBS('Hello õhowå åare youÆ?'); // Hello how are you?