Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyrazenie regularne - jak to zrobic
Forum PHP.pl > Forum > Przedszkole
pio55
witam,
moj pierwszy post i od razu problem;)
do tej pory nie musialem tego umiec teraz nie moge sie bez tego obejsc. szukalem w manualach ale nie daje rady.

chce, zeby w takim tekscie:

CODE

$text = '
<tytul>moj tytul</tytul>
<opis>moj opis tutaj

moze byc w
kilku
linijkach</opis>
';


zamienil mi znaki nowej lini na <br /> ale tylko pomiedzy <opis> a </opis>

w ramach dziesiatek prob, zeby znalezc wlasciwe wyrazenie, zrobilem takie cos:

CODE

//ten kod zamienia to co w tagu <opis> na wielkie litery
$text = 'blabla <opis>moj opis tutaj</opis> blabla ';
echo preg_replace("/(<opis>)(.+)(<\/opis>)/e", "'\\1'.strtoupper('\\2').'\\3'", $text);


zamienia mi na wielkie litery to co pomiedzy <opis>

ale jesli w opisie mam \n to juz nie zamienia... :

CODE

//ten kod juz nie zamienia na wielkie litery tego co w tagu opis :-(((
$text = 'blabla <opis>moj opis tutaj
w kilku

linijkach</opis> blabla ';
echo preg_replace("/(<opis>)(.+)(<\/opis>)/e", "'\\1'.strtoupper('\\2').'\\3'", $text);


jak sobie z tym poradzic. A jesli wybralem zla metode to jak zamienic nowe linie w <br /> tylko pomiedzy <opis> a </opis> w tekscie??

dzieki!
pozdrawiam
empathon
nl2br
artega
1. Używaj poprawnego bbcode dla php
2. Potrzebujesz modyfikatora s w wyrażeniu
  1. <?php
  2. $text = <<<HEREDOC
  3. foo
  4. <opis>I
  5. like
  6. it :)
  7. </opis>
  8. bar
  9. HEREDOC;
  10.  
  11. preg_match("#<opis>(.+?)</opis>#s", $text, $match);
  12.  
  13. $opis = nl2br($match[1]);
  14. ?>
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.