Html Kodlarını BBcode Çevirmek
-
20 Haziran 2012 Çarşamba 10:24
İ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;
Tüm Yanıtlar
-
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; } } -
20 Haziran 2012 Çarşamba 11:10
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 12:34
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 17:15
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
-
21 Haziran 2012 Perşembe 15:03
[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 18:49
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