Приветствую, у меня плохо с регулярками, не могу никак решить. Есть строка Код (Text): <p>Hello<img class="mceNonEditable" title=":doprigalis:" src="http://d2.loc/img/forum/emoticons/doprigalis.gif" data-smile="1" data-shortcut=":doprigalis:" alt="doprigalis.gif" /></p><br><p>Eeee<img class="mceNonEditable" title=":idisuda:" src="http://d2.loc/img/forum/emoticons/idisuda.png" data-smile="1" data-shortcut=":idisuda:" alt="idisuda.png" /></p> Мне нужно удалить все тэги img и на его месте оставить только то, что находиться в title остальной текст должен сохраниться. Сделал так: PHP: preg_replace('/<img(.*)title="([^"]*)"(.*)>/', '$2', $clearedText); Но он почему-то обрезает все после и оставляет только <p>Hello:idisuda: Спасибо
(.*) любое количество любых символов, а нужно ограничить поиск до ближайшего ">". PHP: preg_replace('/<img[^>]*title="([^"]*)"[^>]*>/i', '$1', $clearedText); Или средствами DOMDocument. PHP: $html = '<p>Hello<img class="mceNonEditable" title=":doprigalis:" src="http://d2.loc/img/forum/emoticons/doprigalis.gif" data-smile="1" data-shortcut=":doprigalis:" alt="doprigalis.gif" /></p><br><p>Eeee<img class="mceNonEditable" title=":idisuda:" src="http://d2.loc/img/forum/emoticons/idisuda.png" data-smile="1" data-shortcut=":idisuda:" alt="idisuda.png" /></p>'; $doc = new DOMDocument; $doc->loadHTML($html); $items = $doc->getElementsByTagName('img'); $i = $items->length - 1; for (; $i >= 0; $i--) { $img = $items->item($i); $txt = $doc->createTextNode($img->getAttribute('title')); $img->parentNode->replaceChild($txt, $img); } echo $doc->saveHTML();