none
Html Kodlarını BBcode Çevirmek

    Soru

  • İyi günler herkese;

    Yapmak istediğim programda* html kodlarını bbcode lara çevirmem gerekiyor.Bu işlemi nasıl yapabilirim.Bİr iki adet websayfası buldum script kendileri çeviriyor fakat ben o siteye çevirtmektense kendi programın içinde çevirmesini istiyorum.Bir arkadaşın çevirdiğini görmüştüm fakat ücretli bir uygulamaydı ve görüşemedim kendisiyle.Uzun lafın kısası artık regex ile mi olur yada daha kolay bir yöntemi var mıdır bu işlemi nasıl yapabilirim?

    Basit etiketleri çevirmek kolay fakat iş biraz daha karışık sistemlere gelince en basitinden

    <br><a href="linkimiz" target="_blank" "=""><img src="http://resimlinkimiz" height="50px" width="50px"></a> gibi

    (* Programın amacını webmaster arkadaşımın sunucusunda yedeğini alamamasına neden olcak bir olayın meydana gelip google cache ile varolan sayfalardan kendine yedek oluşturmak istemesi benimde bu tarz bir uygulama yapmayı düşünmemdir)

    Bu konuda oldukça fazla konu araştırdım fakat

    http://www.foliotek.com/devblog/convert-html-to-bbcode-in-c/

    linki dışında bir örneğe yada yardımcı olucak bilgiye ulaşamadım  ki bu kodları biraz düzenlemek istesemde yukardaki kodu dahi düzgün biir şekilde çevirtiremedim.

    Yardımcı olabilen yada olamayan herkese ilgisi için şimdiden teşekkür ederim.İyi çalışamalar dilerim;

    20 Haziran 2012 Çarşamba 10:24

Tüm Yanıtlar

  • Merhaba,

    Aşağıdaki gibi regex kullanarak yapabilirsin.

    public string ConvertHTML2BB(string html)
    {
    	try {
    		//Define regex
    		Regex regExp = default(Regex);
    
    		//Regex for URL tag without anchor
    		regExp = new Regex("\\[url\\]([^\\]]+)\\[\\/url\\]");
    		html = regExp.Replace(html, "<a href=\"$1\">$1</a>");
    
    		//Regex for URL with anchor
    		regExp = new Regex("\\[url=([^\\]]+)\\]([^\\]]+)\\[\\/url\\]");
    		html = regExp.Replace(html, "<a href=\"$1\">$2</a>");
    
    		//Image regex
    		regExp = new Regex("\\[img\\]([^\\]]+)\\[\\/img\\]");
    		html = regExp.Replace(html, "<img src=\"$1\" />");
    
    		//Bold text
    		regExp = new Regex("\\[b\\](.+?)\\[\\/b\\]");
    		html = regExp.Replace(html, "<b>$1</b>");
    
    		//Italic text
    		regExp = new Regex("\\[i\\](.+?)\\[\\/i\\]");
    		html = regExp.Replace(html, "<i>$1</i>");
    
    		//Underline text
    		regExp = new Regex("\\[u\\](.+?)\\[\\/u\\]");
    		html = regExp.Replace(html, "<u>$1</u>");
    
    		//Font size
    		regExp = new Regex("\\[size=([^\\]]+)\\]([^\\]]+)\\[\\/size\\]");
    		html = regExp.Replace(html, "<span style=\"font-size: $1px\">$2</span>");
    
    		//Font color
    		regExp = new Regex("\\[color=([^\\]]+)\\]([^\\]]+)\\[\\/color\\]");
    		html = regExp.Replace(html, "<span style=\"color: $1\">$2</span>");
    		return html;
    	} catch (Exception ex) {
    		return null;			}
    }

    20 Haziran 2012 Çarşamba 10:46
  • Merhaba,

    Aşağıdaki gibi regex kullanarak yapabilirsin.

    public string ConvertHTML2BB(string html)
    {
    	try {
    		//Define regex
    		Regex regExp = default(Regex);
    
    		//Regex for URL tag without anchor
    		regExp = new Regex("\\[url\\]([^\\]]+)\\[\\/url\\]");
    		html = regExp.Replace(html, "<a href=\"$1\">$1</a>");
    
    		//Regex for URL with anchor
    		regExp = new Regex("\\[url=([^\\]]+)\\]([^\\]]+)\\[\\/url\\]");
    		html = regExp.Replace(html, "<a href=\"$1\">$2</a>");
    
    		//Image regex
    		regExp = new Regex("\\[img\\]([^\\]]+)\\[\\/img\\]");
    		html = regExp.Replace(html, "<img src=\"$1\" />");
    
    		//Bold text
    		regExp = new Regex("\\[b\\](.+?)\\[\\/b\\]");
    		html = regExp.Replace(html, "<b>$1</b>");
    
    		//Italic text
    		regExp = new Regex("\\[i\\](.+?)\\[\\/i\\]");
    		html = regExp.Replace(html, "<i>$1</i>");
    
    		//Underline text
    		regExp = new Regex("\\[u\\](.+?)\\[\\/u\\]");
    		html = regExp.Replace(html, "<u>$1</u>");
    
    		//Font size
    		regExp = new Regex("\\[size=([^\\]]+)\\]([^\\]]+)\\[\\/size\\]");
    		html = regExp.Replace(html, "<span style=\"font-size: $1px\">$2</span>");
    
    		//Font color
    		regExp = new Regex("\\[color=([^\\]]+)\\]([^\\]]+)\\[\\/color\\]");
    		html = regExp.Replace(html, "<span style=\"color: $1\">$2</span>");
    		return html;
    	} catch (Exception ex) {
    		return null;			}
    }

    Yanıtınız için teşekkürler;

    şuan hemen ilk dolaştığım forumdan bir remin içinde link bulunan yerin html adresini aldım

    <a "="" target="_blank" href="http://jumbofiles.com/user/Byrm/87105/Aria%20The%20Natural"><img width="50px" height="50px" src="http://soutensubs.com/images/LinksLogo/jumbo.png"></a>

    Fakat çevirme işlemini yapmadan aynı şekilde doğrudan verdi ve aynı şekilde sadece href link verdiğimdede bir bir işlem yapmadan yaptığım işlemin aynısını verdi acaba bir yerde yanlış mı yapıyorum   richTextBox2.Text = ConvertHTML2BB(richTextBox1.Text); şeklinde kullannım yapıyorum

    20 Haziran 2012 Çarşamba 11:10
  • Peki bunu dener misin?

    private static string ConvertHtmlToBBCode(string html)
            {
                html = Regex.Replace(html, @"<a href=", "[url=", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/A>", "[/url]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"'>", "']", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<br(.*?) />", "[br]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<UL[^>]*>", "[ulist]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/UL>", "[/ulist]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<OL[^>]*>", "[olist]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/OL>", "[/olist]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<LI>", "[*]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/li>", "", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<B>", "[b]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/B>>", "[/b]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<STRONG>", "[strong]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/STRONG>", "[/strong]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<u>", "[u]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/u>", "[/u]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<i>", "[i]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/i>", "[/i]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<em>", "[em]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/em>", "[/em]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<sup>", "[sup]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/sup>", "[/sup]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<sub>", "[sub]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/sub>", "[/sub]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<HR[^>]*>", "[hr]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<STRIKE>", "[strike]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/STRIKE>", "[/strike]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<h1>", "[h1]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/h1>", "[/h1]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<h2>", "[h2]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/h2>", "[/h2]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<h3>", "[h3]", RegexOptions.IgnoreCase);
                html = Regex.Replace(html, @"<\/h3>", "[/h3]", RegexOptions.IgnoreCase);
                return html;
            }
    20 Haziran 2012 Çarşamba 12:34
  • o kodların bir kısmını zaten bulabilmiştim fakat asıl sorun

    html = Regex.Replace(html, @"<a href=", "[url=", RegexOptions.IgnoreCase);

    bölümünde çünkü

    <a href="http://www.wupload.com/file/2539847937/sr-acrev.part01.rar" target="_blank">http://www.wupload.com/file/2539847937/s...part01.rar[/url]<br>

    linkini

    [url="http://www.wupload.com/file/2539847937/sr-acrev.part01.rar" target="_blank">http://www.wupload.com/file/2539847937/s...part01.rar[/url]<br>

    şeklinde çeviriyor yani

    [url="http://www.wupload.com/file/2539847937/sr-acrev.part01.rar" sonuna ] koyması gerekiyor en basitinden.zaten bu tarz aralarına bişey giricek şekilde olan kodları asıl çeviremiyorum img ve href kodlarını...

    İlginiz İçin teşekkür ederim

    <a "="" target="_blank" href="http://jumbofiles.com/user/Byrm/87105/Aria%20The%20Natural"><img width="50px" height="50px" src="http://soutensubs.com/images/LinksLogo/jumbo.png"></a>

    Şurdaki img ve href aynı anda olan bir satırı çevirebilsem diğer kodlarıda benzeterek yapıcam.Regex bilgim yetersiz kalıyor ona çalışıyorum şuanda zaten

    20 Haziran 2012 Çarşamba 17:15
  • [url="http://www.wupload.com/file/2539847937/sr-acrev.part01.rar" sonuna ] koyması gerekiyor en basitinden.zaten bu tarz aralarına bişey giricek şekilde olan kodları asıl çeviremiyorum img ve href kodlarını...

    stringi satır satır taratın eger bu satırda  [URL isminde bi veri varsa  o satırın textlenth sini al ve textlenth sinin sonuna ] ekle dersin basit 

    DOGRU ANLAMIŞSAM BÖYLE YAPARSIN  dogru anlamışsam söyle kod hazırlarım yapamassan


    Tek amacım Ekmek param Programcılık zor iş derler Parası yok derlerdi inanmazdım Saglık olsun

    21 Haziran 2012 Perşembe 15:03
  • sizin dediğiniz gibi yapamam çünkü

     <ahref="http://link.com" target="_blank">http://link.com</a>


    üstteki sıradan bir link

    alttaki ise bbcode link şekli

    [url=http://link.com]http://link.com[/url]

    regex ile bakalm bişeyler deniyorum umarım onunla bir şekilde halledicem fakat img linklerini vs çevirmek bundan dahada zor o yüzden

    resim de link barından bir html kodda yani

    <a "="" target="_blank" href="http://jumbofiles.com/user/Byrm/87105/Aria%20The%20Natural"><img width="50px" height="50px" src="http://soutensubs.com/images/LinksLogo/jumbo.png"></a>

    gibi bir kaynağı bbcode nasıl çevireiliriz merak ediyorum:S

    21 Haziran 2012 Perşembe 18:49