Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] textarea oraz "\n"
Forum PHP.pl > Forum > Przedszkole
Solimo
Witam.
Pobieram z bazy ciąg znaków zawierający "<br />" i wrzucam go do textarea. Za pomocą eregi_replace() zmieniam "<br />" na "\n". Niestety textarea ignoruje "\n", tag "<br />" traktuję jako ciąg znaków. Potrzebuję aby ciąg znaków został podzielony za pomocą nowych lini w textarea.

Braki w wiedzy sadsmiley02.gif . Na forach ludzie pisali o zastosowaniu nl2br() oraz eregi_replace('<br /', "\n", $string), ale niestety w przypadku mojego skryptu to nie pomaga.


Kod
if($data = $db->fetch())
                         {
                            
                            $bbc=eregi_replace("\\\'","'",$data[bbc]);
                            $bbc=eregi_replace('<br />', "\n", $bbc)
    
     [...nie ważny w tym momencie kod...]
    
               <textarea name="text_bb" style="height: 400px; width: 500px;">
                ' . $bbc . '
               </textarea>
robos85
Do zapisu używam funkcji nl2br" title="Zobacz w manualu PHP" target="_manual.
Zamienia ona znaki nowej linii na <br />
Aby odwrócić tą czynność, czyli pokazać w polu textarea text ze znakami nowej linii zamiast <br /> użyj
  1. <?php
  2. function br2nl($text) {
  3.  $text = preg_replace("!<br.*>!iU", "", $text);
  4.  return $text; 
  5. }
  6. ?>
Solimo
Kod
$bbc=eregi_replace("\\\'","'",$data[bbc]);
                        function br2nl($text)
                        {
                          $text = preg_replace("!<br.*>!iU", "", $text);
                          return $text;
                        }
                        
                        $bbc=br2nl($bbc);


Tagi <br /> miałem już ładnie od samego początku w bazie. Funkcja je usuwa ale ciąg znaków $bbc zostaję zapisany w texarea wciąż ciurkiem. Właśnie na tym samym etapie utknąłem.
robos85
hmm dziwne.
Ja zawsze jak zapisuję do bazy pola textarea to używam nl2br.

Przy pokazywaniu tego tekstu w polu textarea używam właśnie br2nl i nigdy nie mam problemów.
Solimo
Wchodzi na to, że ta funkcja nie robi do końca tego czego mi potrzeba, ale skoro u Ciebie działa poprawnie sadsmiley02.gif ...
Kod
function br2nl($text)
                       {
                         $text = preg_replace("!<br.*>!iU", "", $text);
                         return $text;
                       }
robos85
na 100% działa, gdy zapiszesz poprzez nl2br. Jeżeli zapisujesz inaczej to nie wiem, bo jest pod nl2br pisana raczej:)
Solimo
Wyciąg z bazy - zapisane za pomoca nl2br() - sa tagi <br /> - Jak postuje to tekst pisany ciurkiem zjada tagi i się szereguje na forum. Chciałbym taki sam efekt otrzymać u siebie.
Kod
      <h1 class=h08a>Links</h1>
   [li][url=http://www.fairtrade.org.uk]Fairtrade Foundation[/url]
   [li][url=http://www.fairtrade.net]The International Fairtrade Labelling Organisation - FLO[/url]
   [li][url=http://www.ifat.org]The International Fairtrade Association (IFAT)[/url] - A global network of fairtrade organisations
   [li][url=http://www.makepovertyhistory.org]Make Poverty History[/url]
   [li][url=http://www.tjm.org.uk]Trade Justice Movement[/url]
   [li][url=http://www.oxfam.org.uk]Oxfam Great Britain[/url]
   [li][url=http://www.wdm.org.uk]World Development Movement[/url]
   [li][url=http://www.christian-aid.org.uk]Christian Aid[/url]
   [li][url=http://www.cafod.org.uk]CAFOD - Catholic Agency for Overseas Development[/url]
   [li][url=http://www.bafts.org.uk]BAFTS[/url] - British Association of Fair Trade Shops
   [li][url=http://www.traidcraft.co.uk]Traidcraft[/url] - Fighting poverty through trade
   [li][url=http://www.bananalink.org.uk]Bananalink[/url] - Works for sustainable production and trade in bananas


Po zastosowaniu Twojej f-cji w textarea otrzymuje taki tekst - ciurkiem:

Kod
         <h1 class=h08a>Links</h1>[li][url=http://www.fairtrade.org.uk]Fairtrade Foundation[/url][li][url=http://www.fairtrade.net]The International Fairtrade Labelling Organisation - FLO[/url][li][url=http://www.ifat.org]The International Fairtrade Association (IFAT)[/url] - A global network of fairtrade organisations[li][url=http://www.makepovertyhistory.org]Make Poverty History[/url][li][url=http://www.tjm.org.uk]Trade Justice Movement[/url][li][url=http://www.oxfam.org.uk]Oxfam Great Britain[/url][li][url=http://www.wdm.org.uk]World Development Movement[/url][li][url=http://www.christian-aid.org.uk]Christian Aid[/url][li][url=http://www.cafod.org.uk]CAFOD - Catholic Agency for Overseas Development[/url][li][url=http://www.bafts.org.uk]BAFTS[/url] - British Association of Fair Trade Shops[li][url=http://www.traidcraft.co.uk]Traidcraft[/url] - Fighting poverty through trade[li][url=http://www.bananalink.org.uk]Bananalink[/url] - Works for sustainable production and trade in bananas


Taki <br /> znikają ale nie dzieli się na nowe linie. Sposób który mi podałeś jest na pewno dobry poniewaz na innych forach tez go polecali.
vokiel
  1. <?php
  2. // zapis do bazy
  3. $description = nl2br($_POST['description']);
  4. // pobranie z bazy
  5. echo preg_replace('/<brs*?/??>/i', "", $news['tresc']);
Solimo
Kod
$bbc=preg_replace('/<brs*?/??>/i', "", $data['bbc']);

Zwraca błąd - " preg_replace() [function.preg-replace]: Unknown modifier '?' in..."
calebos
Jak zapisales po prostu \n jako string do bazy to podmien go na "\n" wtedy powinno dzialac.
Jak to sie robi jest w dokumentacji php.
Sposob z podmienianiem BR'a powinien dzialac. Jesli nie podmienia to cos masz ukryte w tym <br /> i podmienianie nie dziala.
Zapisz plik na dysk o zobacz w hexie co jest w miejscu gdzie powinna lamac sie linia przed i po podmiance br'a.

Normalnie to wystarczy uzyc mysql_real_escape_string() przy zapisie stringu ktory ma "\n" wtedy przy odczycie nie trzeba nic robic i jest ok.
Solimo
W pliku jest <br /> a po zamianie nie ma nic.
vokiel
Może przed nl2br używasz jakiejś innej funkcji? Np mysql_real_escape_string() , czy stripslashes, i wtedy nie masz <br /> tylko np <br \/>.
Solimo
Nie nie. Do momentu zapisania w bazie wszystko jest ok. W bazie sprawdzałem i są <br />. Kaszani się po wywołaniu zmiennej zawierającej te dane w texarea.
vokiel
  1. <?php
  2. // może tak:
  3. echo preg_replace('/<brs*?/??>/i', "\n", $news['tresc']);
sada
  1. $text = preg_replace('/<br\s*\/?>/i', "\n", $text);

i śmiga aż miło
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.