Share[PHP] Tạo hàm xử lý BBCode đơn giản

22 bài đăng
05.09.2017 / 16:36
MrKen
Bài đăng: 2643
Trùm!
Vẫn là A N H

BBCode là bộ mã đơn giản được sử dụng để tạo phong cách hoặc định dạng văn bản. Khi văn bản chứa BBCode hiển thị ra trình duyệt, thông qua đoạn mã xử lý, các thẻ BB sẽ được thay thế bằng thẻ HTML tương ứng.

Ví dụ

TEXT
  1. [b]Chữ in đậm[/b]

Chuyển thành

HTML5
  1. <b>Chữ in đậm</b>

Sau đây là hàm xử lý BBCode đơn giản

PHP
  1. function bbcode($text) {
  2. // Mã BB
  3. $search = array(
  4. '~\[b\](.+?)\[/b\]~s',
  5. '~\[i\](.+?)\[/i\]~s',
  6. '~\[u\](.+?)\[/u\]~s',
  7. '~\[quote\](.+?)\[/quote\]~s',
  8. '~\[color=(.+)\](.+?)\[/color\]~s',
  9. '~\[url\](.+)\[/url\]~s',
  10. '~\[url=(.+)\](.+)\[/url\]~s',
  11. '~\[img\](.+)\[/img\]~s'
  12. );
  13. // Mã HTML tương ứng
  14. $replace = array(
  15. '<b>$1</b>',
  16. '<i>$1</i>',
  17. '<span style="text-decoration:underline;">$1</span>',
  18. '<blockquote>$1</blockquote>',
  19. '<span style="color:$1;">$2</span>',
  20. '<a href="$1">$1</a>',
  21. '<a href="$1">$2</a>',
  22. '<img src="$1" alt="" />'
  23. );
  24. // Thay thế các mã BB bằng các mã HTML tương ứng
  25. return preg_replace($search, $replace, $text);
  26. }

Cách sử dụng

PHP
  1. $bbtext = 'Đây là [b]chữ in đậm[/b], đây là [u]chữ gạch dưới[/u] và đây là [i]chữ nghiêng[/i] với [color=red]màu đỏ[/color].';
  2. $htmltext = bbcode($bbtext);
  3. echo $htmltext;

Kết quả

Đây là chữ in đậm, đây là chữ gạch dưới và đây là chữ nghiêng với màu đỏ.

Đã chỉnh sửa. MrKen (05.09.2017 / 21:21)
05.09.2017 / 21:42
tnit2510
Bài đăng: 966
Member

ahihi yêu a Hạnh quá cơ :v

10.09.2017 / 10:39
kayer
Bài đăng: 240
Member
Đã đủ 18 dấu + làm người lớn

cái này ai cũng biết :>

10.09.2017 / 11:01
VinaDP
Bài đăng: 627
Member
kayer đã viết

cái này ai cũng biết :>

Em không biết đây nhé :>

13.09.2017 / 08:36
VinaDP
Bài đăng: 627
Member

Em chèn vào chatbox (lưu dữ liệu bằng database) ,nhưng chát html <input type="" name="" value=""> thì nó hiện luôn cái input ,thế phải làm sao :(

13.09.2017 / 09:55
hanhphucao
Bài đăng: 2469
Admin
Admin là người tận tâm và luôn hành xử đúng mực.
VinaDP đã viết

Em chèn vào chatbox (lưu dữ liệu bằng database) ,nhưng chát html <input type="" name="" value=""> thì nó hiện luôn cái input ,thế phải làm sao :(

Xử lý trước khi lưu vào database:

PHP
  1. $input = '<input type="text" value=""/>';
  2. $input = htmlentities($input);
13.09.2017 / 10:40
VinaDP
Bài đăng: 627
Member
hanhphucao đã viết

Xử lý trước khi lưu vào database:

PHP
  1. $input = '<input type="text" value=""/>';
  2. $input = htmlentities($input);

Ad bảo thế sao e hiểu :>

13.09.2017 / 10:44
VinaDP
Bài đăng: 627
Member
hanhphucao đã viết

Xử lý trước khi lưu vào database:

PHP
  1. $input = '<input type="text" value=""/>';
  2. $input = htmlentities($input);

Nó chuyển sang dạng filelist mất rùi :(

13.09.2017 / 11:55
tnit2510
Bài đăng: 966
Member
VinaDP đã viết

Nó chuyển sang dạng filelist mất rùi :(

bị XSS đấy :3 thêm function check vào

13.09.2017 / 12:01
VinaDP
Bài đăng: 627
Member
chuotiube đã viết

bị XSS đấy :3 thêm function check vào

Như lào ,giúp tui với!