Search code examples
phparraysstringdata-uri

PHP - Replace string src value with data uri


Good day.

I have an array which holds the data uri of an img.

$var =
array(
[0] => data:image/png;base64,iVBORw0KGgoAA...
[1] => data:image/png;base64,Rw0KKGgoasWAA...
);

And I have a string.

$foo = '<p>test 7/31/2</p> <p>&nbsp;<img src="/media/1.png" alt="" /></p> <p><img src="/media/2.png" alt="" /></p>';

How can I replace the src in $foo with the data uri array in $var?

Result would be like.

$foo = '<p>test 7/31/2</p> <p>&nbsp;<img src="data:image/png;base64,iVBORw0KGgoAA..." alt="" /></p> <p><img src="data:image/png;base64,Rw0KKGgoasWAA..." alt="" /></p>';

Any ideas will do!


Solution

  • Try this:

    $images = [
        "/media/1.png" => 'data:image/png;base64,iVBORw0KGgoAA...',
        "/media/2.png" => 'data:image/png;base64,Rw0KKGgoasWAA...'
    ];
    
    $url = '<p>test 7/31/2</p> <p>&nbsp;<img src="/media/1.png" alt="" /></p> <p><img src="/media/2.png" alt="" /></p>';
    $url = str_replace(array_keys($images), array_values($images), $url);