Дано:
$string = '...<a href="request.php?id=undefined" target="_blank">....<img border="0" src="../preview/184.jpg" id="pic">....</a>...'; // реально тут длинная html-страница
Требуется заменить undefined на цифру после "../preview/" и перед ".jpg", в данном случае 184. Формат строки request.php?id=undefined и формат пути ../preview/{число}.jpg неизменны, а вот параметры у тэгов <a> и <img> могут быть разные. Более того, тэга <img> может не быть вообще, при этом его обрабатывать не надо. То есть если встретиться такой код:
<a ...undefined...>...</a> <a ...undefined...> <img> </a>
то первый тэг <a> обрабатывать не надо (исключить его можно по правилу: между ним и последующим img нигде не должно быть слова undefined).
В качестве ответа жду php-код (наверное, тут всего одна строчка с preg_replace будет - хотя не уверен, это вам решать).
Кстати, этот HTML находится в базе MySQL (54 записи), и массовую замену я собираюсь производить 108 запросами (54 раза прочитать, 54 раза сохранить). Если предложите более рациональный способ (может, всё это можно сделать одним махом прямо в sql-запросе?) - буду благодарен. Версия MySQL: 5.0.45.
Спасибо.
Примечание:
Какие 20 $, какая работа... для знающего человека это дело пяти минут. Я не учу регулярки только потому, что они нужны мне не чаще одного раза в год. Пришлось самому всё учить-вспоминать, на что я потратил час. И еще 5 минут на саму регулярку. Спасибо ShVE-d за полезную информацию, она помогла мне вспомнить основы и самому решить свою задачу. Держи 99 баллов. Ринат, извини, твой вариант работает не совсем корректно.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.