За последние 24 часа нас посетили 19646 программистов и 1696 роботов. Сейчас ищут 1869 программистов ...

Вытащить <br>|<br /> из текста и заменить

Тема в разделе "Регулярные выражения", создана пользователем Ruskar, 5 май 2009.

  1. Ruskar

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

    С нами с:
    5 май 2009
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    Москва
    Нужно первый перевод строки в тексте заменить на тот же перевод строки + тег картинки. Делаю примерно так:

    PHP:
    1.  
    2. $pattern = "/(.*)(<br+[ \/]?>)(.*)/i";
    3. $text = "какой-то текст.<br />Новый абзац";
    4. preg_replace($pattern, "\\1\\2 <img src="/files/img1.jpg" />\\3", $text, 1);
    5.  
    В итоге возвращается исходная строка (замена не производится). Где я ошибся?
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    PHP:
    1. $text = "какой-то текст.<br />Новый абзац";
    2. $text = str_replace(Array('<br />','<br>'),'<br /><img src="/files/img1.jpg" />',$text);
     
  3. Ruskar

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

    С нами с:
    5 май 2009
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    Москва
    Блин, ну так-то любой сможет, я и сам догадался. Но я хочу именно через регулярку, тем более хочу поднатаскаться в ней. А так по вашему варианту ещё не хватает третьего варианта:
    PHP:
    1. $text = "какой-то текст.<br />Новый абзац";
    2. $text = str_replace(Array('<br />', '<br/>', '<br>'),'<br /><img src="/files/img1.jpg" />',$text);
    Да и вообще делать подобным способом, имхо, это скатываться к быдлокоду.
     
  4. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    ИМХО это не тот случай когда целесообразно использовать регулярные выражения
     
  5. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Но если очень хочется то как то так:

    PHP:
    1. $pattern = "/(<br[ \/]*>)/i";
    2. $text = "какой-то текст.<br />Новый абзац";
    3. echo preg_replace($pattern, '$1 <img src="/files/img1.jpg" />', $text, 1);
     
  6. Ruskar

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

    С нами с:
    5 май 2009
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    Москва
    Всё, понял почему у меня не работало. Вообще изначально написал так:
    PHP:
    1. $pattern = "/(<br+[ \/]?>)/i";
    Сейчас плюсик убрал, а вместо вопроса как раз его поставил. Всё работает.