Я бесполезен в регулярных выражениях и не смог сам понять, что я понял.
Я хочу искать + заменять текст ($ 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, оно будет игнорировать эту ошибку!