Tôi đã có một chuỗi với thuộc tính HTML:PHP - chia một chuỗi của HTML thuộc tính thành một mảng được lập chỉ mục
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
Làm thế nào để chuyển đổi chuỗi thành một mảng được lập chỉ mục, như:
array(
'id' => 'header',
'class' => array('foo', 'bar'),
'style' => array(
'background-color' => '#fff',
'color' => 'red'
)
)
vì vậy tôi có thể sử dụng hàm array_merge_recursive PHP để hợp nhất 2 tập hợp các thuộc tính HTML.
Cảm ơn bạn
Cảm ơn bạn Gumbo, regex của bạn mát mẻ. Vấn đề duy nhất là $ attrs ['class'] hoặc $ attrs ['style'] đang trả về chuỗi: vì vậy sẽ rất khó hợp nhất chúng với chuỗi $ attribs khác, ví dụ: kết hợp 2 bộ attribs: $ attribs1 = 'class = "foo bar"'; $ attribs2 = 'class = "lorem"'; vào một 'class = "foo bar lorem"' Đó là lý do tại sao tôi muốn $ attrs ['class'] trả về mảng: mảng ('foo', 'bar') Bạn có ý tưởng để nâng cao điều này không ? – abernier
Tôi thực sự yêu thích giải pháp này ... nhưng tôi không nhận được regex xD nó hơi nhiều cho đầu của tôi – lumio
Tôi vừa viết một regex thay thế cũng phân tích các thuộc tính boolean kiểu HTML5 (không có dấu =) và sử dụng tham chiếu ngược cho dấu ngoặc kép: '(\ w +) \ s * (= \ s * ([" ']) (. *?) \ 2 \ s)? ' –