2011-07-31 53 views
6

tôi sử dụng php gọn gàng để xử lý đầu vào html trong cơ sở dữ liệu của tôi,Một thay thế cho php gọn gàng?

$fragment = tidy_repair_string($dom->saveHTML(), array('output-xhtml'=>1,'show-body-only'=>1)); 

Tôi đã php_tidy này bật trong máy chủ của tôi nhưng máy chủ trực tiếp của tôi không hỗ trợ gọn gàng,

Fatal error: Call to undefined function tidy_repair_string() in /customers/0/5/a/mysite.com/httpd.www/models/functions.php on line 587

Bất kỳ thay thế có thể Tôi phải khắc phục vấn đề này?

+0

Có lẽ chỉ có cách OO hoạt động: '$ gọn gàng = new gọn gàng(); $ clean = $ tidy-> repairString ($ dom-> saveHTML(), ...); ' – Rudie

+0

nope ... nhưng tôi tìm thấy một giải pháp cho điều này đã được sử dụng regex ... cảm ơn! – laukok

Trả lời

4

HTML Purifier có thể viết lại HTML để tuân thủ tiêu chuẩn like HTML Tidy. Nếu bạn cần lọc đầu vào đó để phòng ngừa XSS, v.v., nó cũng sẽ làm điều đó.

Đó là tất cả PHP, vì vậy bạn sẽ có thể sử dụng nó trên bất kỳ máy chủ nào.

+0

Trình lọc HTML dựa trên AFAIK gọn gàng. –

+0

Không có vẻ như: "bạn không cần cài đặt Tidy trên PHP của bạn để sử dụng các tính năng này!" từ http://htmlpurifier.org/docs/enduser-tidy.html – gaborous

5

Nếu bạn đang ở trên một hộp Linux RedHat/CentOS/Fedora và có quyền root để máy chủ của bạn, bạn có thể chạy ...

yum install php-tidy 

như root. Sau đó khởi động lại apache và điều đó sẽ giúp bạn đi.

Có thể có lỗi về các phụ thuộc bị thiếu cần được thêm nhưng thường lệnh trên sẽ là tất cả những gì bạn cần.

Các bản phân phối khác sẽ có các lệnh hơi khác nhau nhưng có thể có thứ tương tự.

Trên cửa sổ, bạn cần cài đặt theo cách thủ công. Bạn có thể tìm thấy hướng dẫn tại đây ... http://devzone.zend.com/article/761#Heading3

+0

Nó sẽ là một máy chủ chia sẻ nếu không teelou đã làm nó/mình. – Alto

8

Tôi tìm thấy htmLawed rất nhanh. Tôi tìm thấy nó khi tìm kiếm một thay thế cho HTMLPurifier, mà là rất chậm.

+0

htmLawed là người chiến thắng đối với tôi. Tôi đang sử dụng nó trong một trang web Moodle, bởi vì nhận được cùng một "không xác định chức năng tidy_repair_string()" lỗi. –

5

Hoặc đơn giản là đi qua các đối tượng DOMDocument:

$dirty = "<xml>some content</xml>" 
$x = new DOMDocument; 
$x->loadHTML($dirty); 
$clean = $x->saveXML(); 
+2

Cảm ơn bạn đã cứu tôi. FYI 'libxml_use_internal_errors (true);' sẽ ngăn chặn các cảnh báo php được tạo ra bởi HTML xấu. –

+0

Hoạt động tuyệt vời! Cảm ơn! – gaborous

+0

doesnt điều này thay đổi charecters của bạn? như thử toàn bộ tập ascii ... – visualex

Các vấn đề liên quan