Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivinvaihdot muuttujaan

Sivun loppuun

HiTe [21.05.2004 22:10:25]

#

Elikkä ongelma olisi tällainen: tulostan mysql-taulusta haetun muutujan echolla ja tarkoituksena olisi saada siihen mukaan myös rivinvaihdot, ettei koko homma tulisi yhteen pötköön. Homma toimii, kun taulun tekstin sekaan kirjoittaa
:t, mutta voisiko asian hoitaa pelkällä enterin painalluksella ilman, että käyttäjän tarvitsisi laittaa sinne itse ylimääräistä koodia?

Antti Laaksonen [21.05.2004 22:16:28]

#

HTML-muotoiset rivinvaihdot kannattaa lisätä vasta tulostusvaiheessa. Tekstissä olevat rivinvaihdot muutetaan siis <br>-tageiksi. Kun olet hakenut tekstin tietokannasta, tulosta se tähän malliin:

echo str_replace("\n", "<br>", $tulostettava_teksti);

Tempfile [21.05.2004 22:26:50]

#

Funktio jota haet lienee nl2br. Se lisää kaikkien tekstissä esiintyvien rivinvaihtojen eteen br:n. Jos se ei toimi, niin voit kokeilla str_replace:a. Tuossa esimerkki:

$teksti = "Tekstiä, \n jossa on\n rivinvaihtoja";

echo nl2br($teksti);
//Tulostaa "Tekstiä, <br />\n jossa on<br />\n rivinvaihtoja";

Edit: Arvasin, että joku kerkeäisi ensin!

Edit2: Muistutan vielä, että Windowsissa rivinvaihtona toimii \r\n , joten tuo Antin funktio kuuluisi näin (myös br on xhtml-yhteensopivana):

echo str_replace("\r\n", "<br />", $tulostettava_teksti);

Olga [21.05.2004 22:48:33]

#

Ja jos otetaan vielä se Mäkkäri huomioon, niin:

echo ereg_replace("(\r\n|\n|\r)", "<br />", $tulostettava_teksti);

leftover [21.05.2004 23:36:33]

#

Ja jos tungetaan se hidas eregi ... ja hyödynnetään str_replacen array-tukea

echo str_replace(array("\r\n","\r","\n"), array("<br />\r\n","<br />\r","<br />\n"), $tulostettava_teksti);

Ja mitä Antin kommenttiin tulee, itse suosisin mieluummin lisäysvaiheessa kantaan br-tagin lisäämistä ja muokkausvaiheessa sen poistamista (vrt 1 x muunnos = z sekuntia vs. sivulatauksia x muunnos = z sekuntia x sivulatauksia).

Antti Laaksonen [21.05.2004 23:47:47]

#

Tällaisissa tapauksissa pienen pieni nopeusero tuskin on merkityksellinen, kun sivun latautuminen käyttäjälle vie kuitenkin aina oman aikansa. Itse pyrin säilyttämään tekstin tietokannassa mahdollisimman yksinkertaisessa muodossa siltä varalta, että muotoilua täytyy myöhemmin muuttaa.

Olga [22.05.2004 00:11:14]

#

leftover kirjoitti:

Ja jos tungetaan se hidas eregi ...

Juu, tästä on ollut useamman kerran puhetta. Aina sanotaan että se on hidas ja että str_replacella homma hoituu nopeammin. Mutta kukaan ei koskaan osannut pistää minulle numeroita, ja kun silmä ei nopeuseroa huomaa, niin eihän siinä sitten mitään. Mut äsken sit otin googlen kauniiseen käteen ja ryhdyin etsimään edes jonkinlaista vertailua. Joltain palstalta sitten löytyi henkilö, joka oli kokeillut käyttäjätiedoston kopelointia molemmilla menetelmillä. Str_replace vei aikaa 5 sekuntia, kun taas ereg puolitoista minuuttia.

Eli ilmeisesti tällaisissa yksinkertaisissa tapauksissa lienee viisainta tosiaankin 'tunkea se hidas eregi ...' :)

Antti Laaksonen [22.05.2004 00:27:17]

#

Tuollaisen nopeusvertailun voi tehdä itsekin. Kokeilin toistaa Irksomen ja leftoverin koodinpätkiä miljoona kertaa peräkkäin, ja mittasin siihen kuluneen ajan. Karu totuus näyttäisi olevan se, että str_replace on noin neljä kertaa nopeampi.

ereg_replace: 18,586 s
str_replace: 4,891 s

Joka tapauksessa yksittäiseen korvaukseen kuluva aika on erittäin pieni, minun koneellani miljoonasosa noista.

HiTe [22.05.2004 15:09:56]

#

.. ja teksti tulostuu kuten ajattelinkin. Kiitoksia vain kaikille!!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta