Здравствуйте! Есть некоторая задача, а с составлением регулярного выражения совсем туго. Если не трудно - помогите пожалуйста. Задача такая: Есть строка $message В ней могут быть ссылки вида: Код (Text): <a id="click_anp" href="http://site.ru" class="postLink">Text</a> И Код (Text): <a id="click_anp" href="http://site.ru/uploads/pictures/jpg/img.jpg" class="postLink"><var class="postImg" title="http://site.ru/uploads/pictures/thumbnails/th_img.jpg"> </var></a> Мне нужно убрать все id="click_anp" из строки $message, где урл не на картинку. Как это сделать? Заранее спасибо за помощь. Регулярные выражения пока тяжеловато даются (
Код (Text): $txt1 = '<a id="click_anp" href="http://site.ru" class="postLink">Text</a>'; $txt2 = '<a id="click_anp" href="http://site.ru/uploads/pictures/jpg/img.jpg" class="postLink"><var class="postImg" title="http://site.ru/uploads/pictures/thumbnails/th_img.jpg"> </var></a>'; print regexp($txt1)."\n".regexp($txt2)."\n"; function regexp($txt){ $patt = '/^(<a id="click_anp") (.*)>((.*)class="postImg"(.*))<\/a>$/'; $rep = '<a ${2}>${3}</a>'; $txt1 = preg_replace($patt, $rep, $txt); return $txt1; }
Большое спасибо! Только регулярка убирает не то, что нужно. Решил подойти по-другому, что и лучше будет. В базе удалю все id="click_anp" и добавлять этот id при каждом запросе картинки динамически, с помощью Вашего кода. Код (Text): function regexp($txt){ $patt = '/^(<a*) (.*)>((.*)class="postImg"(.*))<\/a>$/'; $rep = '<a id="click_anp" ${2}>${3}</a>'; $txt1 = preg_replace($patt, $rep, $txt); return $txt1; } Регулярные выражения это чета страшное совсем, но в последнее время часто приходится сталкиваться и придется их все-таки выучить. Большое спасибо за помощь!