Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> 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
splatch
post 19.03.2004, 12:12:15
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Próbowałem użyć tej funkcji i mi nie zadziałało sad.gif.
Go to the top of the page
+Quote Post
BzikOS
post 19.03.2004, 12:21:44
Post #3





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

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


Cytat
Próbowałem użyć tej funkcji i mi nie zadziałało sad.gif.

I uważasz, że na podstawie tak szczegółowych danych, powiem Ci dlaczego nie zadziałało?
Go to the top of the page
+Quote Post
Majdan
post 19.03.2004, 14:56:02
Post #4





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Cytat
Cytat
Próbowałem użyć tej funkcji i mi nie zadziałało sad.gif.

I uważasz, że na podstawie tak szczegółowych danych, powiem Ci dlaczego nie zadziałało?


BziKOS, splatch nie pytał dlaczego. On poprostu napisał, że niedziała.


--------------------
Go to the top of the page
+Quote Post
BzikOS
post 19.03.2004, 14:58:09
Post #5





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

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


Cytat
Cytat
Cytat
Próbowałem użyć tej funkcji i mi nie zadziałało sad.gif.

I uważasz, że na podstawie tak szczegółowych danych, powiem Ci dlaczego nie zadziałało?


BziKOS, splatch nie pytał dlaczego. On poprostu napisał, że niedziała.

A uważasz, że umieszczałbym niedziałająca funkcję i jeszcze pisał [gotowa funkcja]?
...
Go to the top of the page
+Quote Post
Majdan
post 19.03.2004, 15:08:12
Post #6





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Cytat
Cytat
Cytat
Cytat
Próbowałem użyć tej funkcji i mi nie zadziałało sad.gif.

I uważasz, że na podstawie tak szczegółowych danych, powiem Ci dlaczego nie zadziałało?


BziKOS, splatch nie pytał dlaczego. On poprostu napisał, że niedziała.

A uważasz, że umieszczałbym niedziałająca funkcję i jeszcze pisał [gotowa funkcja]?
...

Ty prosiłeś o zgłoszenie błędu, on zgłosił. Może tylko tyle chciał przekazać. rolleyes.gif


--------------------
Go to the top of the page
+Quote Post
Marusz
post 19.03.2004, 15:12:14
Post #7





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Wspolczuje Bzikowi. Napisal bardzo dobrze dzialajaca funkcje, ktora spisuje sie ZNAKOMICIE w trudnych warunkach, a z tego co widze, nawet nie dostal publicznej podzieki. Powiem wiecej. Jakbym sam na cos takiego wpadl, to zobaczylibyscie ten kod niczym swinia niebo. Swiadczy to tylko o wiedzy i mozliwosciach tego czlowieka. Jesli Wam nie dziala, a osmielacie sie korzystac z jego wypocin i chcecie zastosowac te funkcje u siebie w skryptach, to MILYM GESTEM w strone autora bylo by zdac KONKRETNY raport z dzialania. Jesli nie dziala - co jest ewidentnie Wasza wina - to rowniez nalezalo by opowiedziec co sie dzieje. W koncu na tym polega opensource. Nie zdziwilbym sie, jakby Bzikos przestal wystawiac tutaj swoje skrypty. Bo wychodzi na to, ze robi Wam łaskę...

I jeszcze jedno: dziekuje Ci Bziku, funkcja dziala super. Tymi kilkoma bogatymi w tresc linijkami zastapiles 2500 linii skryptu do sciagniecia z phpclasses smile.gif A dzialanie identyczne... Musialem Ci to napisac.


--------------------
Go to the top of the page
+Quote Post
Majdan
post 19.03.2004, 15:25:13
Post #8





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Funkcja jest super :!: Co do niej nic nie mam i nie mam zamiaru jej nigdzie wykorzystywać. BziKOS odwalił kawał dobrej roboty i zapytał się komu nie działa, ktoś zgłosił błąd i na tym koniec. Ja nie wiem dlaczego nie napisał z jakiego powodu mu nie działa (nikt nie zaprzecza, że to jego wina, bo u mnie działa spox).

Sorry BziKOS, jeżeli Cię uraziłem, ale nie chciałem. :oops:


--------------------
Go to the top of the page
+Quote Post
splatch
post 19.03.2004, 18:49:49
Post #9





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


No więc użyłem funkcji w następujący sposób:

<?php

$tekst = "tekst
gruby
<br>
cienki";

echo bb2html( $tekst );

?>

Na php 4.3.2 nie zadziałało.

No i jeszcze jedno, pomysł rzeczywiście jest dobry, przepraszam, że wywołałem taką dyskusję. To było niechcący
Go to the top of the page
+Quote Post
Marusz
post 19.03.2004, 20:55:11
Post #10





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Cytat
No więc użyłem funkcji w następujący sposób:

<?php

$tekst = "tekst
gruby
<br>
cienki";

echo bb2html( $tekst );

?>


Ja tam bym wczesniej zaincludowal plik z funkcja... albo dolaczyl go gdzies wyzej. Ale sie nie znam i jestem lamerem aaevil.gif


--------------------
Go to the top of the page
+Quote Post
Ozzy
post 20.03.2004, 10:28:45
Post #11





Grupa: Zarejestrowani
Postów: 204
Pomógł: 0
Dołączył: 26.12.2003
Skąd: Rzeszów

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


splatch: być może nie zadziałało, ponieważ po wklejeniu na forum zawinęły się wiersze i trzeba je sobie wyprostować smile.gif
Go to the top of the page
+Quote Post
xardas
post 20.03.2004, 12:10:05
Post #12





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.03.2004

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


A mi nie dziala z innego powodu:
[php:1:46f1b957e1]<?php
include("bbcode.php");
$tekst = "tekst
gruby
<br>
cienki";

echo bb2html( $tekst );
?>[/php:1:46f1b957e1]

kiedy mam taki kod to wynikiem tego jest w przegladarce:
Kod
[b]tekst gruby[/b]

[i]cienki[/i]
Go to the top of the page
+Quote Post
Majdan
post 20.03.2004, 12:37:33
Post #13





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Cytat
A mi nie dziala z innego powodu:
[php:1:e5227f5639]<?php
include("bbcode.php");
$tekst = "tekst
gruby
<br>
cienki";

echo bb2html( $tekst );
?>[/php:1:e5227f5639]

kiedy mam taki kod to wynikiem tego jest w przegladarce:
Kod
[b]tekst gruby[/b]

[i]cienki[/i]


U mnie jak wpiszę taki kod jak u xardasa, to wyświetla mi:
Kod
tekst gruby

cienki


--------------------
Go to the top of the page
+Quote Post
Marusz
post 22.03.2004, 12:58:40
Post #14





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

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


Panowie, a co powiecie na to:

[php:1:c4f6a63935]<?php

require_once("bbcode.php");
$text = "ten tekst, bedzie ]b[pogrubiony]/b[,
dodatkowo jak sie ktos postara, to i ]u[podkreslony]/u[,
zas dla mistrzow w temacie, poleca sie rowniez uzycie ]i[kursywy]/i[";

echo bb2html($text);

?>[/php:1:c4f6a63935]

Oczywiscie Wy, w Waszych skryptach, musicie zamienic w zawartosci zmiennej $text znaczki ] na [, zas [ na ]. Zrobilem je odwrotnie, aby bbcode z forum.php.pl nie przetworzylo tej wartoscii. I dziala, nie ma prawa nie dzialac.


--------------------
Go to the top of the page
+Quote Post
blitz!
post 26.03.2004, 13:45:23
Post #15





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.03.2004
Skąd: black hole

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


Mi funkcja rowniez nie dziala.
Nawet jak przygotwalem statyczny text


Kod
require_once("bbcode.php");

$text = "ten tekst, bedzie [b]pogrubiony[/b],

dodatkowo jak sie ktos postara, to i [u] podkreslony[/u],

zas dla mistrzow w temacie, poleca sie rowniez uzycie [i]kursywy[/i]";



echo bb2html($text);



To wywali tak jak wpislaem- czyli bez sformatowania przez bbcode.php..

Kod
ten tekst, bedzie [b]pogrubiony[/b], dodatkowo jak sie ktos postara, to i [u] podkreslony[/u], zas dla mistrzow w temacie, poleca sie rowniez uzycie [i]kursywy[/i]


Co jest nie tak?
[/code]
Go to the top of the page
+Quote Post
blitz!
post 26.03.2004, 13:57:38
Post #16





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.03.2004
Skąd: black hole

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


zwracam honor, dziala ofkors. Bledem bylo to ze skopiowalem stad i nic nie poprawilem. Forum porozwalalo kolejnsoc w liniach i trzeba to recznie porawic (1 linia jest formatowana na 3 i temu nie dziala)
Go to the top of the page
+Quote Post
MoD
post 1.04.2004, 13:29:18
Post #17





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


Skrypt działa idealnie. Prawda, przy "czystym" skopiowaniu z forum trzeba wprowadzić trochę poprawek bo forum rozwala linijki ale tak to działa OK.


--------------------
Go to the top of the page
+Quote Post
rafcio8405
post 22.06.2004, 16:05:47
Post #18





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.02.2004
Skąd: Warszawa

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


BzikOS DZIAŁA TEN SKRYPT a Ci co mówili że nie działa to coś zwalili!! Brawa dla tego pana za napisanie tak świetnej funkcji thumbsupsmileyanim.gif


--------------------
...::: R @ F I & S @ L I :::...
PrivateServ
Go to the top of the page
+Quote Post
angel2953
post 8.07.2004, 23:17:21
Post #19





Grupa: Zarejestrowani
Postów: 199
Pomógł: 5
Dołączył: 8.07.2004
Skąd: gdynia

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


Cytat(BzikOS @ 2004-03-14 15:08:32)
Oczywiście można też samemu dorobić odpowiednie BBCode'y smile.gif

Witam, na dziędobry thumbsupsmileyanim.gif dla autora funkcji... Nieco ją rozszerzyłem o kod [ email ] ale mam mały problem z [size=questionmark.gif]... sad.gif Wie ktoś jak to mniej więcej zrobić?


--------------------
Sygnaturkę ukradli
Go to the top of the page
+Quote Post
Ive
post 9.07.2004, 14:28:32
Post #20





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


a czy ta funkcja działa w obie strony? czy tylko raz zamienia tagi [ url ] w <a href.... i już ich nie rusza ?
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 6.08.2025 - 00:54