I'm trying to find a regular expression that would allow me replace the SRC
attribute in an image. Here is what I have:
function getURL($matches) {
global $rootURL;
return $rootURL . "?type=image&URL=" . base64_encode($matches['1']);
}
$contents = preg_replace_callback("/<img[^>]*src *= *[\"']?([^\"']*)/i", getURL, $contents);
For the most part, this works well, except that anything before the src="
attribute is eliminated when $contents is echoed to the screen. In the end, SRC
is updated properly and all of the attributes after the updated image URL are returned to the screen.
I am not interested in using a DOM or XML parsing library, since this is such a small application.
How can I fix the regex so that only the value for SRC
is updated?
Thank you for your time!
Do another grouping and prepend it to the return value?
Use a lazy star instead of a greedy one.
This may be your problem:
Change it to:
This way, the
[^>]*
matches the smallest possible number of your bracket expression, rather than the largest possible.