Đôi khi chúng ta cần thay đổi thuộc tính src của hình ảnh bằng url mới khi lấy dữ liệu động từ cơ sở dữ liệu.
Giả sử rằng chúng ta sẽ lấy nội dung html trong mô tả sản phẩm từ cơ sở dữ liệu bằng cách sử dụng mã php bên dưới.
Ví dụ
$data['description']=html_entity_decode($productData['description'],ENT_QUOTES,'UTF-8');
Kết quả trả về HTML như sau:
Ví dụ
<span> Product Name 1 <span>
<a href="#"><img src="../images/products/image1.jpg"></a>
<span> Product Name 2 <span>
<a href="#"><img src="../images/products/image2.jpg"></a>
Có thể có nhiều hình ảnh trong phần mô tả sản phẩm, nhưng trong ví dụ của chúng ta thì có 2 hình ảnh.
Ở đây, chúng tôi sẽ thay thế thuộc tính src của mọi hình ảnh và thêm thuộc tính data-src với url hình ảnh cũ.
Ví dụ
$dom = new DOMDocument();
$dom->loadHTML($data['description']);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
$old_src = $image->getAttribute('src');
$new_src = 'image/products/newimage.jpg';
$image->setAttribute('src', $new_src);
$image->setAttribute('data-src', $old_src);
}
$data['description'] = $dom->saveHTML();
Cách nó hoạt động ra sao?
Instantiate DOMDocumentclass cho phép bạn làm việc với HTML một cách logic.
Ví dụ
$dom = new DOMDocument();
Tải nội dung HTML đã giải mã.
Ví dụ
$dom->loadHTML($data['description']);
Nhận tất cả hình ảnh từ dom bằng getElementsByTagName.
Ví dụ
$images = $dom->getElementsByTagName('img');
Lặp qua từng hình ảnh và thay thế src.
Nhận giá trị của thuộc tính src từ thẻ img.
Ví dụ
$image->getAttribute('src');
Đặt giá trị thuộc tính src trong thẻ img.
Ví dụ
$tag->setAttribute('src', $new_src);
Lưu các thay đổi.
Ví dụ
$dom->saveHTML();
Đây là cách thay thế src nhiều hình ảnh trong mã HTL bằng PHP. Chúc các bạn thành công