2016-04-08 20 views
0

Bir sayfa için ham HTML döndüren bir veritabanı sorgusu var, ancak sayfamda kullanırsam, düz metin olarak gösterilir (tabii ki) . HTML olarak nasıl biçimlendiririm, böylece etiketleri ve benzerlerini kullanır.Veritabanından HTML al ve düz metin yerine html olarak biçimlendir

benim veritabanında var ne bir örnek:

<div class="test">SOME TEXT HERE</div> 

Ama aynı zamanda böyle görüntülenir. Metni HTML gibi biçimlendirmek isterim.

BURADA BAZI METİN

Ama aynı zamanda sınıf ile bir div olacağını: Yani bu sadece göstermek istiyorum "test"

en iyi yaklaşımı ne olurdu bu ulaşmaya hedef?

Sayfayı oluşturmak için MVC modelinde Twig kullanıyorum. Yani sayfa oluşturucu bu

public function renderArticle() { 
     $twig = new TwigHelper(); 
     $args['title'] = "Artikel $this->articleId"; 
     $args['blogHTML'] = BlogController::retrieveBlogHTML($this->articleId); 
     echo $twig->render('article.twig', $args); 
    } 

Ve "BlogController :: retrieveBlogHTML" gibi şöyledir:

public static function retrieveBlogHTML($id) { 
    $db = DatabaseHelper::get(); 
    $st = $db->prepare("SELECT PageHTML FROM T_Blog WHERE BlogId = :BlogId"); 
    $st->execute([ 
     ':BlogId' => $id, 
    ]); 
    if ($st->errorCode() !== \PDO::ERR_NONE) { 
     return null; 
    } 
    return $st->fetchAll(); 
} 

Bu benim zaman içinde bu noktada JavaScript kullanmak mümkün olmayacaktır demektir, Bu sorunu düzeltmenin tek yolu bu olacaksa, bir geçici çözüm oluşturmak zorunda kalacağım.

Bu yüzden kazara kaçan bir şeyden mi yoksa bu satırlardaki bir şeyden mi kaynaklandığımı bilmiyorum, ancak hiçbir başlık kullanmıyorum.

+0

Divanı nasıl alırsınız? Ajax? Sunucu tarafı kodu? – Max

+1

Bu, büyük olasılıkla doğru içerik başlıklarını ayarlama sorunudur, ya da yanlışlıkla HTML'den kaçmış olabilirsiniz. Daha fazla detay ve mevcut işleminizin bazı kodlarını vermelisiniz. – GolezTrol

+0

Geç yanıtım için özür dilerim, ancak ana sayfamı, verileri nasıl aldığımla ilgili daha fazla bilgi ile güncelledim. –

cevap

2

html karakterlerinden kurtulmanız gerekir (bu nedenle <, &lt; olur).

javascript size, genelde gayet HE library ya gidecekseniz bu işlevi kullanabilirsiniz, ancak kullanarak php Eğer htmlentities kullanabiliyorsa HE kütüphane

var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) { 
    return '&#'+i.charCodeAt(0)+';'; 
}); 

yaptığı tüm olası durumları kapsamaz diğer diller, ya bir kütüphane aracılığıyla ya da yerleşik olarak benzer bir fonksiyona sahip olacaktır.

+0

Verileri almak için şu anda Javascript kullanmıyorum. Bilgilerini nasıl aldığımı göstermek için ana sayfamı güncelledim. Geç cevap için özür dilerim btw. –

+0

Tetikleme otomatik olarak ayarlamayı düşündüm mü? Her durumda, html kaçışını '{{blogHTML.PageHTML | e}}' veya '{{blogHTML.PageHTML | escape}}' kullanarak zorlayabilirsiniz. Bakınız: http://twig.sensiolabs.org/doc/filters/escape.html – Lee

İlgili konular