Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> BBCode => HTML, Funkcja, PHP 4 i 5
BzikOS
post 14.03.2004, 16:08:32
Post #1





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Witam. Przysiadłem nad funkcją do zamiany BBCode na HTML, którą kiedyś na szybko napisałem, a która nie była pozbawiona wad. Oto wersja 2.0 snitch.gif Proszę testować i zgłaszać błędy.

  1. <?php
  2. function bb2html( $str )
  3. {
  4. global $codesArr;
  5.  
  6. $codesArr = array( 'url' => array( 'a', 'href=\"' ),
  7. 'img' => array( 'img', 'src=\"' ),
  8. 'color' => array( 'span', 'style=\"color:' ),
  9. 'font' => array( 'span', 'style=\"font-family:' ),
  10. 'table' => array( 'table', 'table' ),
  11. 'b' => 'b',
  12. 'u' => 'u',
  13. 'i' => 'i',
  14. 'ul' => 'ul',
  15. 'li' => 'li' );
  16. reset ($codesArr);
  17. foreach( $codesArr as $aKey => $aVal )
  18. {
  19. $str = preg_replace_callback( &#092;"#[($aKey)+[=]?(http|https|ftp+://)?(.*?)](http|https|ftp+://)?(.*?)[/$aKey]#si\", 'repl', $str );
  20. }
  21. return( $str );
  22. }
  23.  
  24.  
  25. function repl( $matches )
  26. {
  27. global $codesArr;
  28. if( is_array( $codesArr[$matches[1]] ) )
  29. {
  30. if( !empty( $matches[2] ) )
  31. {
  32. $protocol = $matches[2];
  33. }
  34. elseif( !empty( $matches[4] ) )
  35. {
  36. $protocol = $matches[4];
  37. }
  38. else
  39. {
  40. $protocol = 'http://';
  41. }
  42.  
  43. switch( $matches[1] )
  44. {
  45. case 'url':
  46. $address = empty( $matches[3] ) ? $matches[5] : $matches[3];
  47. $x = '<' . implode( ' ', $codesArr[$matches[1]] ) . $protocol . $address . '\" class=\"link1\" target=\"_blank\">';
  48. $x .= $matches[4] . $matches[5];
  49. $x .= '</' . $codesArr[$matches[1]][0] . '>';
  50. break;
  51.  
  52. case 'img':
  53. $address = empty( $matches[3] ) ? $matches[4] . $matches[5] : $matches[2] . $matches[3];
  54. $x = '<' . implode( ' ', $codesArr[$matches[1]] ) . $address . '\" class=\"icon\" alt=\"\" />';
  55. break;
  56.  
  57. case 'table':
  58. $temp = explode( &#092;"n\", str_replace( \"r\", '', $matches[5] ) );
  59. $rows = '';
  60. $colsNo = 1;
  61. foreach( $temp as $row )
  62. {
  63. if( !empty( $row ) )
  64. {
  65. $colsNo = ( substr_count( $row, '|' ) + 1 > $colsNo ) ? substr_count( $row, '|' ) + 1 : $colsNo;
  66. $rows .= '<tr><td>' . str_replace( '|', '</td><td>', $row ) . '</td></tr>';
  67. }
  68. }
  69. if( !empty( $matches[3] ) )
  70. {
  71. $headInfo = explode( '|', $matches[3] );
  72. $head = ( !empty( $headInfo[0] ) ) ? '<tr><th colspan=\"' . $colsNo . '\">' . $headInfo[0] . '</th></tr>' : '';
  73. $border = ( is_numeric( $headInfo[1] ) ) ? $headInfo[1] : 1;
  74. $width = ( !empty( $headInfo[2] ) ) ? $headInfo[2] : '';
  75. }
  76. $x = !empty( $rows ) ? '<'.$codesArr[$matches[1]][0].' border=\"'.$border.'\" width=\"'.$width.'\">'.$head.$rows.'</'.$codesArr[$matches[1]][1].'>' : '';
  77. break;
  78.  
  79. default:
  80. $x = '<' . implode( ' ', $codesArr[$matches[1]] ) . $matches[3] . '\">';
  81. $x .= $matches[4] . $matches[5];
  82. $x .= '</' . $codesArr[$matches[1]][0] . '>';
  83. break;
  84. }
  85. }
  86. else
  87. {
  88. $x = '<' . $codesArr[$matches[1]] . '>' . $matches[5] . '</' . $codesArr[$matches[1]] . '>';
  89. }
  90.  
  91. return $x;
  92. }
  93. ?>


Możliwe BBCode'y:
Kod
[url]www.adres.pl[/url]

[url]http://www.adres.pl[/url]

[url=www.adres.pl]text[/url]

[url=http://www.adres.pl]text[/url]

[url=https://www.adres.pl]text[/url]

[url]https://www.adres.pl[/url]

[url=ftp://ftp.adres.pl]text[/url]

[url]ftp://ftp.adres.pl[/url]

[img]http://www.adres.pl/image.xxx[/img]

[img=http://www.adres.pl/image.xxx][/img]

[color=kolor]text[/color]

[b]text[/b]

[i]text[/i]

[u]text[/u]

[font=kroj_czcionki]text[/font]

[table] element 1 | element2 | element3
element 4 | element5 | element6[/table]

[ul][li]element1[/li] [li]element2[/li][/ul]


Oczywiście można też samemu dorobić odpowiednie BBCode'y smile.gif

Definicja funkcji:
string <span style="font-weight: bold;">bb2html</span>( string )

Ten post edytował BzikOS 24.08.2006, 12:22:47
Go to the top of the page
+Quote Post

Posty w temacie
- BzikOS   BBCode => HTML   14.03.2004, 16:08:32
- - splatch   Próbowałem użyć tej funkcji i mi nie zadziałało .   19.03.2004, 12:12:15
- - BzikOS   CytatPróbowałem użyć tej funkcji i mi nie zadziała...   19.03.2004, 12:21:44
- - Majdan   CytatCytatPróbowałem użyć tej funkcji i mi nie zad...   19.03.2004, 14:56:02
- - BzikOS   CytatCytatCytatPróbowałem użyć tej funkcji i mi ni...   19.03.2004, 14:58:09
- - Majdan   CytatCytatCytatCytatPróbowałem użyć tej funkcji i ...   19.03.2004, 15:08:12
- - Marusz   Wspolczuje Bzikowi. Napisal bardzo dobrze dzialaja...   19.03.2004, 15:12:14
- - Majdan   Funkcja jest super :!: Co do niej nic nie mam i ni...   19.03.2004, 15:25:13
- - splatch   No więc użyłem funkcji w następujący sposób: ...   19.03.2004, 18:49:49
- - Marusz   CytatNo więc użyłem funkcji w następujący sposób: ...   19.03.2004, 20:55:11
- - Ozzy   splatch: być może nie zadziałało, ponieważ po wkle...   20.03.2004, 10:28:45
- - xardas   A mi...   20.03.2004, 12:10:05
- - Majdan   Re: A mi...   20.03.2004, 12:37:33
- - Marusz   Panowie, a co powiecie na to: <?php require_o...   22.03.2004, 12:58:40
- - blitz!   Mi funkcja rowniez nie dziala. Nawet jak przygotwa...   26.03.2004, 13:45:23
- - blitz!   zwracam honor, dziala ofkors. Bledem bylo to ze sk...   26.03.2004, 13:57:38
- - MoD   Skrypt działa idealnie. Prawda, przy "czystym" sko...   1.04.2004, 13:29:18
- - rafcio8405   BzikOS DZIAŁA TEN SKRYPT a Ci co mówili że nie dzi...   22.06.2004, 16:05:47
- - angel2953   Cytat(BzikOS @ 2004-03-14 15:08:32)Oczywiście...   8.07.2004, 23:17:21
- - Ive   a czy ta funkcja działa w obie strony? czy tylko r...   9.07.2004, 14:28:32
- - onlyX   Świetna funkcja. Wielkie gratulacje dla BzikOS...   11.09.2004, 19:38:25
- - SoulRipper   dobra. ja robie to tak Kodfumction bb2html(...   9.12.2004, 21:31:37
- - Ive   [PHP] pobierz, plaintext <?$string = &#092;...   9.12.2004, 21:41:10
- - krysk   Mógłby ktoś to wystawić w formie phps na jakimś se...   25.12.2004, 23:35:17
- - sf   Jakby ktoś potrzebował czegoś bardziej `poteżn...   28.12.2004, 11:36:32
- - primo   szukałem małej nieskomplikowanej funkcji zamieniaj...   28.01.2005, 10:39:56
- - Linandar   Mam ten sam problem My Webpage dałem: [PHP] pobier...   30.01.2005, 07:46:32
- - bregovic   Ehhh, zobaczcie tutaj: http://tmp.brego.dk/php/bbc...   30.01.2005, 13:01:05
- - Linandar   No to dałem plamę.... chodziło tylko o nawiasy{} P...   30.01.2005, 15:36:46
- - jang   BzikOS to jest super. Działa od ręki. Win98 - Apac...   3.02.2005, 20:27:55
- - angel2953   A jak do tego dodać jeszcze rozmiar czcionki by by...   16.02.2005, 11:57:08
- - Spirit86   [PHP] pobierz, plaintext <?php  $codesArr...   28.04.2005, 15:37:51
- - NuLL   Ja również dziękuje - własnie mi się przydała. B...   12.05.2005, 18:06:48
- - Vengeance   Ze swojej strony jeszcze zapraszam na http://bbcod...   15.05.2005, 22:27:16
- - Bojakki   Cytat(Linandar @ 2005-01-30 06:46:32)Mam ten ...   15.12.2005, 23:35:48
- - bregovic   Wyedytowałem linki w moim poście. Dla leniwców: ht...   16.12.2005, 00:05:32
- - Forgoot   Można by dodać jeszcze takie coś jak rozwijana tre...   29.03.2006, 07:47:10
- - Spirit86   hmm, wygląda mi to na plagiat: eSports.pl: [HTML...   29.03.2006, 12:39:20
- - Forgoot   W moim ostatnim poście powiedziałem: CytatWątek z ...   29.03.2006, 12:49:17
- - Spirit86   no dobra, ale nie uważasz, że to nie fair korzysta...   29.03.2006, 12:55:59
- - Forgoot   Jedyny tekst, który zapożyczyłem to kod JavaScript...   29.03.2006, 13:08:04
- - nospor   Cytathmm, wygląda mi to na plagiat:Czy to nie są z...   29.03.2006, 17:10:43
- - Mamber   Chodzi mi o skrypt php, który podał @Forgoot Hmmm...   30.03.2006, 09:57:58
- - nospor   @Mamber nie. ja tylko zmodyfikowalem wnetrze funk...   30.03.2006, 11:44:33
- - Mamber   A jak ta opcje (ukrywania tekstu) dodac do bbCode ...   12.04.2006, 13:37:27
- - angel2953   Kod<><><><><...   6.06.2006, 12:00:39
- - juzwa   jako, że jestem początkujący w wyrażeniach regular...   10.07.2006, 22:07:54
- - BzikOS   Ponieważ wiele ludzi nadal ma problemy z użyciem f...   24.08.2006, 12:27:25
- - sujez   nie wiem czy komus cos to da ale ja robie tak [PHP...   25.08.2006, 15:35:46
- - Spirit86   [PHP] pobierz, plaintext <?php$zrodlo=preg_repl...   25.08.2006, 16:28:27
- - sujez   hmm moze masz racje usune   25.08.2006, 18:51:25
- - fjellah   A czy koś mógłby dodać bbcode do obsługi kodu?   26.08.2006, 12:58:44
- - Spirit86   [PHP] pobierz, plaintext <?php$codesArr = array...   17.09.2006, 20:06:24


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 19:32