Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Znajdz i zamień znak nowej linii
Forum PHP.pl > Forum > Przedszkole
Syri
Witam potrzebuje napisać formularz który dostanie tekst w formie:
CODE

Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Fusce pulvinar sodales purus
quis condimentum. Cras vitae ornare lectus.
Vivamus eros dui, fermentum eu ultricies non,
fringilla quis felis.

Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Fusce pulvinar sodales purus
quis condimentum. Cras vitae ornare lectus.
Vivamus eros dui, fermentum eu ultricies non,
fringilla quis felis.


a następnie zrobi z tego coś takiego:

CODE

<tag>Lorem ipsum dolor sit amet, consectetur</tag>
<tag>adipiscing elit. Fusce pulvinar sodales purus</tag>
<tag>quis condimentum. Cras vitae ornare lectus.</tag>
<tag>Vivamus eros dui, fermentum eu ultricies non,</tag>
<tag>fringilla quis felis. </tag>
</tag>
<tag>Lorem ipsum dolor sit amet, consectetur</tag>
<tag>adipiscing elit. Fusce pulvinar sodales purus</tag>
<tag>quis condimentum. Cras vitae ornare lectus.</tag>
<tag>Vivamus eros dui, fermentum eu ultricies non,<tag/>
<tag>fringilla quis felis. </tag>


Wymyśliłem sobie, że użyję do tego str_replace tylko nie wiem jak zmusić funkcję do szukania "nowej linii" i zmiany jej na <tag> "nowa linia" </tag>
nospor
Zrob explode() po nowej linii (\n), otrzymasz tablice, ktorej kazdy element to oddzielna linia i rob sobie co cchesz
SmokAnalog
Cytat(nospor @ 2.07.2014, 11:01:25 ) *
Zrob explode() po nowej linii (\n)

Lepiej PHP_EOL.
Turson
Albo
  1. $text ='
  2. Lorem ipsum dolor sit amet, consectetur
  3. adipiscing elit. Fusce pulvinar sodales purus
  4. quis condimentum. Cras vitae ornare lectus.
  5. Vivamus eros dui, fermentum eu ultricies non,
  6. fringilla quis felis.
  7.  
  8. Lorem ipsum dolor sit amet, consectetur
  9. adipiscing elit. Fusce pulvinar sodales purus
  10. quis condimentum. Cras vitae ornare lectus.
  11. Vivamus eros dui, fermentum eu ultricies non,
  12. fringilla quis felis. ';
  13.  
  14. '#\n(.*)\n#',
  15. function($matches){
  16.  
  17. return '<tag>'.$matches[1].'</tag>';
  18. }, $text);
trueblue
  1. $text="<tag>".str_replace("\r\n","</tag><tag>",$text)."</tag>";

Zostanie pusty tag na końcu jeśli ostatnia linia tekstu jest zakończona \r\n, więc tu taki twór:
  1. $text=str_replace("<tag></tag>","","<tag>".str_replace("\r\n","</tag><tag>",$text)."</tag>"));

nospor
@Smoku, z tego co zrozumialem, to tekst przyjdzie z forma z textarea i tutaj uzycie PHP_EOL bedzie raczej bez sensu
SmokAnalog
Można jeszcze prościej:
  1. $text = preg_replace('#^.+$#m', '<tag>\0</tag>', $text);


Lub jeśli puste linie też mają być w tagu:
  1. $text = preg_replace('#^.*$#m', '<tag>\0</tag>', $text);
Syri
Więc mam tak:
  1. <form action="skr.php" method="post">
  2. <textarea name="formularz" rows="25" cols="100">
  3. Miejsce tekst
  4. <input type="submit" value="Wyślij" name="submit"/>
  5. </form>


oraz skr.php
  1. <?php
  2. $text = $_POST['formularz'];
  3. $text = preg_replace('#^.*$#m', '<tag>\0</tag>', $text);
  4. echo $text;
  5. ?>


Do formularza podaje
CODE
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Fusce pulvinar sodales purus
quis condimentum. Cras vitae ornare lectus.
Vivamus eros dui, fermentum eu ultricies non,
fringilla quis felis.

Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Fusce pulvinar sodales purus
quis condimentum. Cras vitae ornare lectus.
Vivamus eros dui, fermentum eu ultricies non,
fringilla quis felis.


I otrzymuje:
CODE
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar sodales purus quis condimentum. Cras vitae ornare lectus. Vivamus eros dui, fermentum eu ultricies non, fringilla quis felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar sodales purus quis condimentum. Cras vitae ornare lectus. Vivamus eros dui, fermentum eu ultricies non, fringilla quis felis.


Czyli nie do końca to co chciałem :/
pitu
Zastosuj explode tak jak napisał Ci @nospor bez problemu osiągniesz zamierzony cel.
Syri
Ok. Póki co działa. Dziękuję wszystkim.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.