textarea и абзацы

Тема в разделе "PHP", создана пользователем Emporio, 2 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Emporio

    Emporio Постоялец

    Регистр.:
    17 апр 2009
    Сообщения:
    63
    Симпатии:
    4
    Допустим через textarea я отправляю стих:
    В такой скрипт:

    PHP:
    <?php
    $s 
    $_REQUEST[stih];// строка, в которой нужно произвести замену
    $slova=array("демон","жар");// тут все слова, к которым будут синонимы
    $sinon=array("Ангел","пар");// тут синонимы. Важно, чтобы каждому слову соответствовал синоним
    // т.е. одинаковое количество элементов в массивах $slova и $sinon
    $ns=str_replace($slova,$sinon,$s); // новая строка
    echo $ns;
    ?>
    Он заменяет и выводит мне всё в одну строчку, а нужно, чтоб вывел 2 четверостишья. Помогите пожалуйста!
     
  2. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    PHP:
    <?php 
    $s 
    $_REQUEST[stih];// строка, в которой нужно произвести замену 

    $s=str_replace("\n","<br>",$s); //// Делаем переносы 

    $slova=array("демон","жар");// тут все слова, к которым будут синонимы 
    $sinon=array("Ангел","пар");// тут синонимы. Важно, чтобы каждому слову соответствовал синоним 
    // т.е. одинаковое количество элементов в массивах $slova и $sinon 
    $ns=str_replace($slova,$sinon,$s); // новая строка 
    echo $ns
    ?>

    Как то так должно работать
     
  3. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    PHP:
      <?php
    $s 
    $_REQUEST[stih];// строка, в которой нужно произвести замену
    $slova=array("демон","жар");// тут все слова, к которым будут синонимы
    $sinon=array("Ангел","пар");// тут синонимы. Важно, чтобы каждому слову соответствовал синоним
    // т.е. одинаковое количество элементов в массивах $slova и $sinon
    $ns=str_replace($slova,$sinon,$s); // новая строка
    echo nl2br($ns); //этого должно быть достаточно
    ?> 
     
  4. Emporio

    Emporio Постоялец

    Регистр.:
    17 апр 2009
    Сообщения:
    63
    Симпатии:
    4
    Спасибо конечно, что отозвались, но я сразу нашёл решение, не мог отписаться, потомочто на сайт не мог зайти, не открывался он.

    Ты поставил при выводе nl2br(), но это только в конкретном случае, а есть масса других, и будет лучше, чтобы передавался уже с абзацами и строчками, тобишь это будет выглядеть вот так:

    PHP:
    <?php
    $s 
    nl2br($_REQUEST[stih]);// строка, в которой нужно произвести замену
    $slova=array("демон","жар");// тут все слова, к которым будут синонимы
    $sinon=array("Ангел","пар");// тут синонимы. Важно, чтобы каждому слову соответствовал синоним
    // т.е. одинаковое количество элементов в массивах $slova и $sinon
    $ns=str_replace($slova,$sinon,$s); // новая строка
    echo $ns//этого должно быть достаточно
    ?>
     
  5. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    Правильно так, как написали в третьем посте. А ваш последний вариант в теории неверен и будет работать с оговорками.
     
  6. Emporio

    Emporio Постоялец

    Регистр.:
    17 апр 2009
    Сообщения:
    63
    Симпатии:
    4
    А что если в тексте будут ссылки?
    HTML:
    Бла... Бла... Бла...
    Бла...
    http://www.site.ru/plik.html
    Бла... Бла... Бла...
    Бла...
    Нужно чтобы он искал их и вставлял на место имя хоста, в данном случае
    HTML:
    www.site.ru
    .
    Нужно чтобы получилось вот так:
    HTML:
    Бла... Бла... Бла...
    Бла...
    www.site.ru
    Бла... Бла... Бла...
    Бла...
    Добавлено через 50 минут
    str_replace я заменил на preg_replace, чтобы регуляркой находить ссылки, но как их заменить на адрес их же хоста?
     
  7. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    так если у тебя есть регулярка, используй \1 (либо $1), ну или больший номер... смотря как она у тебя построена.
    Читай мануал к ф-ции preg_replace
     
  8. Emporio

    Emporio Постоялец

    Регистр.:
    17 апр 2009
    Сообщения:
    63
    Симпатии:
    4
    Читал я, вот регулярка:
    PHP:
    #(https?|ftp)://\S+[^\s.,>)\];'\&quot;!?]#"
    Если $1, то выводит http. Как сделать, незнаю, адреса сайтов, их будет несколько и все разные.
     
  9. Emporio

    Emporio Постоялец

    Регистр.:
    17 апр 2009
    Сообщения:
    63
    Симпатии:
    4
    Всё, задача решена! )
     
Статус темы:
Закрыта.