Регулярное выражение для поиска + Заменить href = "URL"

Я бесполезен в регулярных выражениях и не смог сам понять, что я понял.

Я хочу искать + заменять текст ($ content) для любого url внутри href привязки с новым url (хранимым как переменная $ newurl).

Измените это:

<a href="http://blogurl.com/files/foobar.jpg"><img alt="foobar" src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a> 

К этому:

 <a href="http://newurl.com/here/"><img alt="foobar" src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a> 

Я предполагаю, что использование preg_replace было бы лучше для этого. Что-то вроде:

 preg_replace('Look for href="any-url"', 'href="$newurl"',$content); 

Идея состоит в том, чтобы получить все изображения на главной странице WordPress, чтобы ссылаться на их сообщения, а не на полноразмерные изображения (как они по умолчанию). Обычно будет заменен только один url, но я не думаю, что было бы больно заменять все возможные матчи.

Надеюсь, все это имело смысл и спасибо заранее!

Вот суть того, что я придумал. Надеюсь, это помогает кому-то:

 $content = get_the_content(); $pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))/"; $newurl = get_permalink(); $content = preg_replace($pattern,$newurl,$content); echo $content; 

Mucho спасибо @WiseGuyEh

Это должно сделать трюк – вы можете проверить его здесь

 (?<=href=("|'))[^"']+(?=("|')) 

Он использует lookahead и lookbehind, чтобы утверждать, что все, что он соответствует, начинается с href = " или href =" и гарантирует, что он заканчивается одиночной или двойной цитатой.

Примечание. Регулярное выражение не сможет определить, является ли это допустимым html-документом, если существует смешанное количество двойных кавычек, используемых для включения значения href, оно будет игнорировать эту ошибку!