Đây là câu hỏi tương tự với this one. Tôi muốn chuyển đổi các chuỗi thoát ANSI, đặc biệt là màu sắc, thành HTML. Tuy nhiên, tôi muốn thực hiện điều này bằng cách sử dụng PHP. Có bất kỳ thư viện hoặc mã ví dụ nào ở đó thực hiện việc này không? Nếu không, bất cứ điều gì có thể giúp tôi trở thành một phần của giải pháp tùy chỉnh?Chuyển đổi chuỗi ANSI thoát sang HTML bằng cách sử dụng PHP
Trả lời
Tôi không biết bất kỳ thư viện nào như vậy trong PHP. Nhưng nếu bạn có một đầu vào phù hợp với màu sắc hạn chế, bạn có thể thực hiện nó bằng cách sử dụng đơn giản str_replace()
:
$dictionary = array(
'ESC[01;34' => '<span style="color:blue">',
'ESC[01;31' => '<span style="color:red">',
'ESC[00m' => '</span>' ,
);
$htmlString = str_replace(array_keys($dictionary), $dictionary, $shellString);
Giải pháp str_replace sẽ không hoạt động trong trường hợp màu sắc được "lồng", bởi vì trong mã màu ANSI, một ESC [0m reset là tất cả những gì cần thiết để thiết lập lại tất cả các thuộc tính. Trong khi ở dạng HTML, bạn cần số thẻ đóng SPAN chính xác.
Một cách giải quyết mà các công trình trường hợp sử dụng "lồng" là dưới đây:
// Ugly hack to process the color codes
// We need something like Perl's HTML::FromANSI
// http://search.cpan.org/perldoc?HTML%3A%3AFromANSI
// but for PHP
// http://ansilove.sourceforge.net/ only converts to image :(
// Technique below is from:
// http://stackoverflow.com/questions/1375683/converting-ansi-escape-sequences-to-html-using-php/2233231
$output = preg_replace("/\x1B\[31;40m(.*?)(\x1B\[0m)/", '<span style="color: red">$1</span>$2', $output);
$output = preg_replace("/\x1B\[1m(.*?)(\x1B\[0m)/", '<b>$1</b>$2', $output);
$output = preg_replace("/\x1B\[0m/", '', $output);
(lấy từ Drush Terminal của tôi vấn đề ở đây: http://drupal.org/node/709742)
Tôi cũng đang tìm kiếm các thư viện PHP để làm điều này một cách dễ dàng.
P.S. Nếu bạn muốn chuyển đổi chuỗi ANSI thoát thành PNG/hình ảnh, bạn có thể sử dụng AnsiLove.
Có thư viện bây giờ: ansi-to-html
Và rất dễ sử dụng:
$converter = new AnsiToHtmlConverter();
$html = $converter->convert($ansi);
- 1. Chuyển đổi HTML sang PDF (không phải PDF sang HTML) bằng cách sử dụng PHP
- 2. Chuyển đổi PDF sang JPG bằng cách sử dụng PHP
- 3. Chuyển đổi docx sang pdf bằng cách sử dụng PHP
- 4. Chuyển đổi .doc sang html trong php
- 5. chuyển đổi html sang .doc bằng Python?
- 6. Chuyển đổi PDF sang HTML bằng Python
- 7. Cách tốt nhất để chuyển đổi HTML sang dạng thô bằng cách sử dụng Python
- 8. Cách chuyển đổi HTML sang PDF bằng cách sử dụng iText
- 9. Chuyển đổi HTML thoát chuỗi Unicode plain/ASCII
- 10. PHP chuyển đổi sang boolean bằng '!!'
- 11. Lọc ra các chuỗi thoát ANSI
- 12. Chuyển đổi HTML sang PDF
- 13. Chuyển HTML sang mẫu bằng Flask/Jinja2
- 14. chuyển đổi HTML (có Javascript) sang PDF bằng cách sử dụng JavaScript
- 15. Trang trống bổ sung khi chuyển đổi HTML sang PDF bằng cách sử dụng abcPDF
- 16. Chuyển đổi định dạng wikitext sang HTML bằng cách sử dụng dòng lệnh
- 17. Chuyển đổi TeX sang html
- 18. Chuyển đổi HTML sang XAML
- 19. HTML tới chuỗi RTF bằng cách sử dụng Python
- 20. Làm cách nào để chuyển đổi tài liệu docx sang html bằng php?
- 21. Chuyển đổi HTML sang XML
- 22. Làm thế nào để chuyển đổi Excel XLS sang CSV bằng cách sử dụng PHP
- 23. ImageMagick/Imagick chuyển đổi PDF sang JPG bằng cách sử dụng API PHP gốc
- 24. Chuyển đổi PDF sang JPG chất lượng cao bằng cách sử dụng PHP và ImageMagick
- 25. Chuyển đổi Gtk sang html
- 26. chuyển đổi html sang javascript
- 27. Có cách nào để chuyển biến số php sang trang khác bằng nút (html/php) không?
- 28. Chuyển đổi ngày Excel bằng cách sử dụng PHP Excel
- 29. Rails: Chuyển đổi HTML sang PDF?
- 30. Chuyển đổi tệp văn bản từ ANSI sang ASCII bằng C#
Tôi đang thực sự tìm kiếm một giải pháp tổng quát hơn, nhưng điều này là tốt và tôi có thể kết thúc đi tuyến đường này. –