Guest User

Untitled

a guest
Sep 21st, 2011
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.71 KB | None | 0 0
  1. <?php
  2. /*
  3. Title: BBCode class
  4. Created by: Our
  5. Email: our[at]style[dot]bg
  6. Site: http://blog.style-bg.org
  7. Portfolio: http://idev.style-bg.org
  8.  
  9. Как да използваме.
  10. Просто минете нужният текст през метода parse();
  11. Хубаво е да разгледаде форматирането и да промените HTML заместванията по Вашите нужди.
  12. Ако не сметнете за необходимо, просто форматирайте в CSS класовете
  13. .our_code и .our_quote
  14. Извинявам се, че обяснявам прекалено подробно, но предполагам, че класа може да се използва
  15. и от по-начинаещи потребители.
  16. */
  17.  
  18. class bbcode {
  19.     public function parse($text) {
  20.         // Проверяваме дали в текста има bbcode тагове :
  21.         $tags = preg_match("/\[(.+?)\]/",$text);
  22.         if($tags == 0) {
  23.             return $text; // Няма тагове, връщаме текста
  24.         } else {
  25.             return $this->parse_tags($text); // Имаме тагове и ги парсваме
  26.         }
  27.     }
  28.    
  29.     function parse_tags($text) {
  30.         // Започваме с таговете за оформяне на текст
  31.         $text = preg_replace("(\[b\](.+?)\[\/b\])is", '<span style="font-weight:bold">$1</span>', $text); // Bold
  32.         $text = preg_replace("(\[i\](.+?)\[\/i\])is", '<span style="font-style:italic">$1</span>', $text); // Italic
  33.         $text = preg_replace("(\[u\](.+?)\[\/u\])is", '<span style="text-decoration:underline">$1</span>', $text); // Underline
  34.         $text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])", '<span style="font-family: $1;">$2</span>', $text); // Шрифт
  35.         $text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is", '<span style="color: $1">$2</span>', $text); // Цвят
  36.         $text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is", '<span style="font-size: $1px">$2</span>', $text); // Размер       
  37.        
  38.         // Код и цитат
  39.         // Тъй като най-често код и цитат са форматирани, в зависимост от дизайна на сайта, просто ще им приложим класове.
  40.         // Можете да промените форматираето както желаете. Същото можете да направите и с горните тагове.
  41.         $text = preg_replace("(\[code\](.+?)\[\/code\])is", '<span class="our_code">$1</span>', $text); // Код
  42.         $text = preg_replace("(\[quote\](.+?)\[\/quote\])is", '<div class="our_quote">$1</div>', $text); // Цитат
  43.        
  44.         // Изображения
  45.         // Забележете, че първото е изображение, подадено без височина и широчина от сорта на [img]http://site.com/kartinka.jpg[/img]
  46.         // Второто е изображение с посочени width и height по следния начин : [img=90x60]http://site.com/kartinka.jpg[/img]
  47.         $text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1" />', $text);
  48.         $text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1" />', $text);
  49.        
  50.         // Линкове
  51.         // Първият ред е линк без зададен текст, а ввторият, линк със зададен текст от типа [url=линк]текст[/url]
  52.         $text = preg_replace("/\[url\]([ a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\']*)\[\/url\]/", '<a class="our_link" href="$1">$1</a>', $text);
  53.         $text = preg_replace("(\[url\=([ a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\']*)\](.+?)\[/url\])", '<a class="our_link" href="$1">$2</a>', $text);
  54.        
  55.         // Връщаме резултатите
  56.         return $text;
  57.     }
  58. }
  59. ?>
Advertisement
Add Comment
Please, Sign In to add comment