Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> BBCode => HTML, Funkcja, PHP 4 i 5
BzikOS
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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
 
Start new topic
Odpowiedzi
Forgoot
post
Post #2





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Suwałki

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


W moim ostatnim poście powiedziałem:
Cytat
natomiast w temacie do którego podałem link pisałem:
Cytat
(...) chcialbym wiedziec jak zrobic rozwijana tresc, i jak dodac taki kod do BBCode?
Przyklad rozwijanej treści jest w news'ie na stronie: zobacz (...)

I nie napisałem że to skrypt mego autorstwa. Poprostu zależało mi na takiej opcji. Chciałem dodać do tego tematu kod który przedstawiłem, aby uatrakcyjnić obecne BBCode.

Ten post edytował Forgoot 29.03.2006, 12:50:07
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 Aktualny czas: 6.10.2025 - 14:53