За последние 24 часа нас посетили 17105 программистов и 1345 роботов. Сейчас ищут 1505 программистов ...

Как найти и заменить картинку в тексте.

Тема в разделе "Регулярные выражения", создана пользователем mazyakov, 10 дек 2006.

Статус темы:
Закрыта.
  1. mazyakov

    mazyakov Активный пользователь

    С нами с:
    29 май 2006
    Сообщения:
    84
    Симпатии:
    0
    Адрес:
    Minsk
    Задача такова:
    Есть текст с картинками, как найти все картинки в тексте и заменить на соответствующие значения из массива, т.е.:

    Код (Text):
    1. $text = "<body><p>блок текста</p><p>><img src='картинка1'></p><p> блок текста </p><p><img src='картинка2'></p> ….</body>";
    2.  
    3. $array = array['0'=>'картинка1', '1'=>'картинка2', …];
    Последовательность найденной картинки соответствует индексу массива, т.е.
    Первая найденная картинка текста = $array[0], вторая = $array[1] и т.д.

    Как найти картинку я знаю, и как заменить одну, НО НЕ ЗНАЮ как работать с блоком текста. Помогите советом.

    Код (Text):
    1. $content = preg_replace("/<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>/is",  "<img src='" . $array[$i] . "'>", $content);
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
  3. mazyakov

    mazyakov Активный пользователь

    С нами с:
    29 май 2006
    Сообщения:
    84
    Симпатии:
    0
    Адрес:
    Minsk
    Я понимаю, что вопрос не совсем понятен, попробую другими словами:

    Необходимо найти все картинки в тексте и заменить на какое-то другое значение, причем для каждой картинки свое значение, а не одно значение на все картинки. Вот.

    Я пробовал использовать preg_replace_callback(), но не получается что-то.
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Попробуй еще )
    Скорее всего здесь придется использовать глобальные переменные.
    Что значит "первая найденная картинка текста"?
     
  5. mazyakov

    mazyakov Активный пользователь

    С нами с:
    29 май 2006
    Сообщения:
    84
    Симпатии:
    0
    Адрес:
    Minsk
    Это значит - первое найденное соответствие регулярному выражению, и если есть еще совпадения, то в соответствии с порядком (последовательностью) «нахождения» (соответствия), есть второе, третье и т.д. Т.е. как бы это сказать последовательность соответствий.
     
  6. mazyakov

    mazyakov Активный пользователь

    С нами с:
    29 май 2006
    Сообщения:
    84
    Симпатии:
    0
    Адрес:
    Minsk
    Все, спасибо, все заработало. Раньше просто не сталкивался с такими задачами.

    Вот решение:
    Находим соответствие:
    Код (Text):
    1. $content = preg_replace_callback("/<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>/is", "replaceImg", $content);
    значение для замены:
    Код (Text):
    1. function replaceImg()
    2. {
    3.     static $i = 0;
    4.     $string_replase = $_SESSION['path_file'][$i];
    5.     $i++;
    6.     return $string_replase;
    7. }
     
  7. mazyakov

    mazyakov Активный пользователь

    С нами с:
    29 май 2006
    Сообщения:
    84
    Симпатии:
    0
    Адрес:
    Minsk
    тема закрыта
     
Статус темы:
Закрыта.