2011-01-23 29 views
11

Aşağıdaki kod desenli karakterler için metni dönüştürür görmezden. Ama aynı zamanda bozulmadan bırakmak istediğim HTML etiketlerini de dönüştürüyor. Sadece aksanlı karakterleri nasıl değiştirebilirim ve diğer tüm özel karakterleri bozulmadan nasıl bırakabilirim? Teşekkürler.HTML aksan dönüştürme, ancak etiketlerini

$temp = file_get_contents("file.html"); 
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8'); 

cevap

21

htmlspecialchars() ve htmlspecialchars_decode() sadece kod çözme &, <, >, ' ve "/kodlar; böylece onların HTML özel karakter geri onların varlıkları dönüştürmek için ikincisi kullanabilirsiniz:

echo htmlspecialchars_decode(htmlentities($temp, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES); 
+0

bir bir sayfada hem kodlanmış ve düz kişiler kullanıldığında da bu çalışır Tamam iş gibi görünüyor (örn: Her iki '<' ve '<'). Dönüştürme ve anında geri dönüştürme riski, bazı durumlarda orijinal metnin kısımlarının istemeden kaybedilebileceğidir. Bu durumda, '<' orijinal metinde '<' tüm bulunuşu dahil < 'tekrar ardından' < 've **' tüm oluşumları < '** dönüştürülür' dönüşecektir. varlık sınırlayıcı '&' kendisi de dönüştürülür çünkü Ancak bu durum bu değildir! Bu yüzden, metnin istenmeyen dönüşümüyle ilgili endişelenmenize gerek yok. Kulağa çok açık geliyor ama hatırladım. Benim durumumda –

+1

mükemmel bir çözüm, teşekkür – Codex73

1

A ama kesmek, ama zaten ilk bunu gibi htmlentities() uygulayabilirsiniz ve sonra standart xml için bunu tersine karakter (<, >, &, ", ') htmlspecialchars_decode() kullanarak. Bu, etiketleri geri yükleyecektir.

0

Bu

if (!function_exists('make_accents')): 
function make_accents($string) 
{ 
    //$string = "<p>Angoulême</p>"; 
    $trans = get_html_translation_table(HTML_ENTITIES); 
    //$encoded = "&lt;p&gt;Angoul&ecirc;me&lt;/p&gt;"; 
    $encoded = strtr($string, $trans); 
    //Next two lines put back the < & > tags 
     $noHTML = str_replace("&lt;", "<", $encoded); 
    $encoded = str_replace("&gt;", ">", $noHTML); 
    return $encoded; 
} 
endif; 
+0

, get_html_translation_table (HTML_ENTITIES); strtr ($ string, $ trans); İçeriğimin doğrudan çıkışını yapmak için yeterliydi. – Muffun

İlgili konular