ФорумПрограммированиеPHP для идиотов → замена строки

замена строки

  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 27 января 2009 г. 8:15

    что то туплю совсем, в обшем есть строка типа

    $str='<b>example: </b><div align="left">this is a test <br /><img src="zzz/zzz.jpg" alt="" width="900" height="538" /></div>';


    в $str может быть несколько картинок, что написано в src= заранее не известно, ну и alt= width= height= чоже не известны.
    надо вытащить из текста картинки и заменить их скажем фразой типа $replaced = 'здесь была картинка - имя картинки';

    что то типа
     str_replace("<img src=" ************ />", $replaced, $str);


  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 8:41, спустя 26 минут 4 секунды

    preg_replace("/<img(.*?)>/i", $replaced, $str);
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 27 января 2009 г. 9:11, спустя 29 минут 12 секунд


    preg_replace("/<img(.*?)>/i", $replaced, $str);

    А деж тут имя картинки? :)
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 9:17, спустя 6 минут 9 секунд

    Josh,
    вытащить из текста картинки и заменить их скажем фразой

  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 27 января 2009 г. 9:21, спустя 4 минуты 13 секунд

    CTAPbIu_MABP,
    в $str может быть несколько картинок, что написано в src= заранее не известно, ну и alt= width= height= чоже не известны.
    надо вытащить из текста картинки и заменить их скажем фразой типа $replaced = 'здесь была картинка - имя картинки';
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 27 января 2009 г. 9:22, спустя 1 минуту 10 секунд

    Забей короче - видишь молчит, значит устроило :)
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 9:30, спустя 8 минут 7 секунд

    ааа… ступил
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 9:31, спустя 15 секунд

    это все потому что читаю по диагонали
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 27 января 2009 г. 10:14, спустя 43 минуты 38 секунд

    не молчу :) preg_replace("/<img(.*?)>/i", $replaced, $str); частично проблему решает, я попробую дальше сам разобраться. спасибо!
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 27 января 2009 г. 10:28, спустя 13 минут 36 секунд

    #<img\s+src="?([^">]*)"?\s+alt="?([^">]*)"?\s+width="?(\d+)"?\s+height="?(\d+)"?\s+/>#i


    ?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 10:37, спустя 8 минут 47 секунд

    Timur, не усложняй

    #<img(.*?)src="(.*?)"(.*?)>#i

    все не жадное и src не должно стоять сразу после img
    и путь к картинке получаем
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 10:38, спустя 1 минуту 22 секунды

    кстати у тебя там сплошь и рядом
    "?

    это так и будет обозначать " а не все что до ?
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 27 января 2009 г. 10:44, спустя 6 минут 16 секунд

    ну я не мега-регулярно-выражатор )

    src не должно стоять сразу после img

    Согласен, там последовательность атрибутов жестко задана, как изменить, что бы было произвольно и как потом понять тогда в каком элементе matches находится width, в каком height — я хз.

    ? — ставил после кавычек, они же могут быть, могут не быть.

    И, кажется, я только что понял суть слов "жадный/нежадный" в регулярках
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 10:50, спустя 6 минут 10 секунд

    <img src="pic.gif" width="10"/>

    Йа жадное регулярко
    #<img src="(.*)"(.*)>#i

    йа верну 'pic.gif" width="10' и '/'
    а Йа не жадное
    #<img src="(.*?)"(.*)>#i

    йа верну 'pic.gif' и ' width="10"/'
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 27 января 2009 г. 10:53, спустя 2 минуты 51 секунду


    Timur, не усложняй

    #<img(.*?)src="(.*?)"(.*?)>#i

    все не жадное и src не должно стоять сразу после img
    и путь к картинке получаем


    #<img(?:.*?)src=('|")(.*?)\\1(.*?)>#ism


    я думаю что так будет чуток получше, больше вариантов обработает)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!