preg_replace обработка тега img

  • Автор темы Автор темы phprus
  • Дата начала Дата начала

phprus

Moderator
Команда форума
preg_replace обработка тега img

Здравствуйте.
Помогите, пожалуйста, написать регулярное выражение, которое должно заменять теги img в строке на значение атрибутов alt или title у этих тегов, а если таких атрибутов нет, то на пустую строку.

P.S. пожалуйста, не отправляйте в FAQ или документацию я там был, но все равно все, что я пишу у меня не работает.
 
> но все равно все, что я пишу у меня не работает.
Скорее, больше похоже на "но всё равно сам я делать нихрена не буду". Подаяния - за углом, ближе к форуму Offtopic.
 
не. передумал. читай синтаксис и поймешь. // я вот до сих пор не понимаю почему одним хватает только мануала, а другим не хватает?? вроде он один на всех....
 
nikit87
Одни пробуют, ошибаются и потом опять пробуют, а если танцы с бубном ни к чему не привели то идут на форум...

Другие почитают, понимают что ничего не поняли и идут на форум ...

(мануал ИМХО не панацея, бывают вопросы ответов на которые там или нету или они там "замаскированы")
 
по-мойму в мане даже есть именно такое выражение. именно для такой ситуации. просто некоторые читают ман а некоторые делаю вид что читают. этот вопрос решался много-много раз.
 
phprus
Простейший вариант только для ознакомления (не советую к практике)
$text = preg_replace('/\[img\](.*?)\[\/img\]/', '<img src="\\1" alt="\\1" />', $text);
 
Vladson
ты вообще вопрос читаешь?? или просто из мана взял строчку?? ты хоть посмотри что эта регулярка делает сначала. это типа для форумов всяких нужно чтоб теги типа заменять на нормальные
 
nikit87
Я сам дал бы рабочий код, но Фанат сказал что это не правильно и обосновал свою точку зрения, по этому я пробую на практике, работает его подход или нет.... (он заключается в следующем)

Допустим я дам готовый рабочий код, он поставит и забудет, а потом будет спрашивать тут про тег "b", потом про "i"...
А между тем этот пример объясняет (на языке для даунов) как работают регулярные вырожения и позволяет даже придурку сообразить как сделать то что ему надо ?

Я дал направление где копать, можно сказать разжевал а ему только осталось проглатить...
 
Vladson
Фанат вроде никогда и не пишет код никакой. даже что-то похожее на проблему автора топика. он посылает в ман (туда же откуда ты взял этот код). но при этом в мане написано что для чего в этой регулярке. а у тебя кусок кода который без объяснения не понятен новичку.
 
Vladson
По моему, того, что твой пример объясняет "на языке для даунов", явно недостаточно для решения сабжевой задачи (по сути обратной той, которую решает пример) человеком, делающим в регулярных выражениях лишь первые шаги. Тем более задача действительно не совсем тривиальная - там еще условие есть...

phprus
Вот рабочее (кажется) решение для части задачи
заменять теги img в строке на значение атрибутов alt или title у этих тегов
(точнее - того из этих двух атрибутов, который встретится первым):
PHP:
echo preg_replace('#<img.*?\s(?:alt|title)=([\'"]?)(.*?)\1.*?>#si', '\\2', $text);
 
Автор оригинала: SelenIT
По моему, того, что твой пример объясняет "на языке для даунов", явно недостаточно для решения сабжевой задачи
Через месяц после того как я начал изучать РНР (я и знать не знал даже какая разница между str_replace и ereg_replace) я увидел этот код и после экспериментов с ним у меня и мысли небыло чтоб запостить на форум что-то типа сабжевой задачи...

(nikit87 я пошёл не на сто процентов по пути Фанат'a а только частично)
 
Через месяц после того как я начал изучать РНР ... я увидел этот код и после экспериментов с ним...
[off]Значит, ты либо действительно гений, либо исключительный везунчик с отличной интуицией. Лично мне для эффективных поисков методом тыка нужно хотя бы минимально понимать то, с чем я экспериментирую - без этого "эксперименты" превращаются в танцы с бубном на кофейной гуще. Те же PCRE, к примеру, я активно использую почти два года, но до сих пор не могу сказать, что понимаю их хотя бы на 80% (хотя на дауна вроде не похож...)
Подход же Фаната состоит как раз в том, чтобы подтолкнуть человека к пониманию, а не к беспомощному "тыканию куда попало".[/off]
 
Автор оригинала: SelenIT
Значит, ты либо действительно гений, либо исключительный везунчик с отличной интуицией.
Это "тренированная" интуиция, я с 89-го программирую на ASM

Автор оригинала: SelenIT
Подход же Фаната состоит как раз в том, чтобы подтолкнуть человека к пониманию, а не к беспомощному "тыканию куда попало".
Если он читал мануал (а он настаивает на том что читал) то единственное в чём он мог запутаться это в (.*?) а всё остальное там описано настолько понятным языком что не то что даун, а полный-полный "додлик" может разобраться...
 
Vladson
Если он читал мануал... <а также ссылки из faq-а на статьи>
[off]...то согласись, что он уже должен был увидеть энное количество примеров такого же уровня сложности и такой же степени касательства к сабжевой задаче :)
Какова же тогда информационная ценность твоего примера?[/off]
 
SelenIT
Он мог читать мануал без коментов (не на сайте, а в .chm файле) и мог не видеть примеров (в том числе и того что привёл я)
 
Vladson
Ну так давал бы ссылку на онлайновый ман, а не цитату, так же оторванную от комментов :). К тому же, далеко не все примеры в комментах могут быть образцом для подражания...

И предлагаю на этом с "методическим" оффтопом завязать.
 
Автор оригинала: SelenIT
К тому же, далеко не все примеры в комментах могут быть образцом для подражания...
Но некоторые из них могут помочь и не слабо, мне например иногда помогали даже отрывки настолько левого кода который едва работает (главное не паниковать, а мучать его дальше)
Автор оригинала: SelenIT
И предлагаю на этом с "методическим" оффтопом завязать.
Учитывая активность автора темы, все наши выкрутасы были безсмысленны и завязать надо было уже давно (так что это мой последний пост в этой теме)
 
SelenIT
Спасибо за помощь буду пробовать.

SiMM
Если у человека чтото не получается Это не значит что он ничего делать не будет и ничего не прорбовал перед тем как спросить.

Vladson
Уж извините господин Vladson но мне срочно пришлось кое куда съездить на 2 дня и поэтому я не мог посещать форум.
Теги b и i ине так вырезать не надо и я не на столько тупой как вы думаете.
 
> Если у человека чтото не получается Это не значит что он ничего делать не будет и ничего не прорбовал перед тем как спросить.
Если у человека что-то не получается, он показывает свой код и задаёт конкретные вопросы. У тебя вопроса не обнаружено (помогите написать - это не вопрос и не описание того, что у тебя не получается).
 
Сверху