poashoas
poashoas

Reputation: 1894

preg_replace for images in PHP

I have a question about preg_replace. I have the following HTML in WordPress:

<img width="256" height="256" src="http://localhost/wp-content/uploads/2015/08/spiderman-avatar.png" class="attachment-post-thumbnail wp-post-image" alt="spiderman-avatar">

I change it to the following:

<img src="" data-breakpoint="http://localhost/wp-content/uploads/2015/08/" data-img="theme-{folder}.jpg" class="srcbox" alt="spiderman-avatar">

with the following preg_replace:

$html = preg_replace(
    '/src="(https?:\/\/.+\/)(.+\-)([0-9]+)(.jpg|.jpeg|.png|.gif)"/',
    'src="" data-breakpoint="$1" data-img="$2{folder}$4"', // Replace and split src attribute into two new attributes
    preg_replace(
        '/(width|height)="[0-9]*"/',
        '', // Remove width and height attributes
        preg_replace(
            '/<img ?([^>]*)class="([^"]*)"?/',
            '<img $1 class="$2 srcbox"', // Add class srcbox to class attribute
            $html
        )
    )
);

I have the feeling I have written some serious slow code, and it can be done in a single preg_replace.

Chris85 mentioned the HTML parser, so I found this and got this so far:

http://nimishprabhu.com/top-10-best-usage-examples-php-simple-html-dom-parser.html

include('simple_html_dom.php');

$html = file_get_html($html);

From here I COULD loop through all images and change the th attribute. But how do I put the new element were it came from?

Upvotes: 0

Views: 970

Answers (1)

Bernhard
Bernhard

Reputation: 1870

you should better use DOM

http://php.net/manual/de/domdocument.loadhtml.php

and extract the attributes with it.

Upvotes: 1

Related Questions