2012-05-08 37 views
5

Tôi muốn nhận thẻ có thuộc tính "class" bằng "someclass" nhưng chỉ những thẻ chưa xác định thuộc tính "id".dom đơn giản html: cách lấy thẻ mà không có thuộc tính nhất định

tôi đã cố gắng như sau (dựa trên câu trả lời này) nhưng không làm việc:

$html->find('.someclass[id!=*]'); 

Lưu ý:

Tôi đang sử dụng Simple HTML DOM class và trong tài liệu cơ bản mà họ cung cấp cho , Tôi không tìm thấy những gì tôi cần.

+0

Đối với bộ chọn CSS3, hãy thử http://code.google.com/p/phpquery/ – h0tw1r3

Trả lời

3

Simple HTML DOM class không hỗ trợ CSS3 pseudo classes bắt buộc đối với đối sánh thuộc tính phủ định.

Thật đơn giản để làm việc xung quanh giới hạn mà không gặp nhiều rắc rối.

$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);}); 
+0

Tôi vừa mới đăng một câu hỏi tương tự nhưng trong mã của tôi tôi nhận được tất cả các yếu tố với một lớp học mà không có một bộ ID cụ thể.Bạn có nhớ hiển thị lợi nhuận sẽ là gì nếu tôi cần kiểm tra id! = Some_id Cảm ơn – Anagio

+1

'$ nodes = array_filter ($ html-> find ('. Something'), function ($ node) {return (! Empty ($ node-> id) && $ node-> id! = 'some_id');}); ' – h0tw1r3

+0

Cảm ơn, tôi thấy bạn đã đề xuất phpquery chấp nhận bộ chọn css3. Có bất kỳ sự khác biệt hiệu suất giữa dom này và html đơn giản? – Anagio

5

Từ PHP Simple HTML DOM Parser Manual, dưới sự How to find HTML elements?, chúng ta có thể đọc: [! Thuộc tính]

Trận yếu tố mà không có thuộc tính xác định.

Mã của bạn sẽ trở thành:

$html->find('.someclass[!id]'); 

này sẽ phù hợp các yếu tố với một lớp someClass mà không có một thuộc tính id.


câu trả lời ban đầu của tôi được dựa trên sự lựa chọn của các yếu tố giống như chúng tôi làm với jQuery kể từ HTML đơn giản DOM Parser tuyên bố hỗ trợ họ trên main page của họ, nơi chúng ta có thể đọc:

Tìm thẻ trên một trang HTML với các bộ chọn giống như jQuery.

Xin lỗi chân thành với những người bị xúc phạm bởi câu trả lời ban đầu của tôi và bày tỏ sự không hài lòng trong nhận xét!

+0

Làm việc tuyệt vời ở đây! – Norse

+1

Cảm ơn, nhưng toán tử đó không hoạt động đối với mã PHP sử dụng lớp Simple HTML DOM (xem liên kết của nó trong bài đăng của tôi). – leticia

+0

vâng, đó là những gì tôi làm, nhưng tôi không chắc chắn nếu không có giải pháp nào khác, cảm ơn, +1 cho bạn – leticia

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