Page 1 of 1

manipulating preg_replace() variables

Posted: Mon Sep 10, 2007 12:38 pm
by csh
Let's say I want to change the href attribute to be an argument of another url for all my <a> elements. For example:

Change:
http://www.old.com

To:
http://www.new.com?url=[b]http//www.old.com[/b]

I need to urlencode the old url, but can't figure out how to do it. If I use:

preg_replace("\<a href='(.*)'(.*)\>", "<a href='http://www.new.com?url=".[b]urlencode("$1")[/b].".'$2>", $content);

Then, I get:

http://www.new.com?url=[b]%241[/b]

Meaning it's not recognizing the variable. Any ideas?

thanks in advance, Chuck

Posted: Mon Sep 10, 2007 2:08 pm
by csh
I think I got it. I think the following works:

preg_replace("/\<a href='(.*)'(.*)\>/e", "'<a href=\'http://www.new.com?url=[b]'[/b].urlencode('$1').'\'$2>'", $content);

(Note that I had forgotten to put the slashes around the regular expression in the first post, but assuming they were put in, it would still have not worked)

Posted: Mon Sep 10, 2007 5:49 pm
by vigge89
An alternative is to use preg_replace_callback() together with a nice callback function.