Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Viimeinen \n

Sivun loppuun

SysRq868 [16.03.2005 17:52:11]

#

Minä koetin tehdä adminia, jossa voisi editoida joitain rivejä. Editoitava tiedosto oli tyyliin seuraava:

Tekstiä
Lisää tekstiä
lista, listaa, listoja, listat, listalla, listalta
juttu nummero yksi###ja khaksi###kolmaskin vielä
Tekstiä tekstiä...

Ja ideana olisi, että adminin käyttäjä voisi editoida riviä 4 (rivi 3 PHP:ssä) eli tuota, joka on halkaistu kolmella risuaidalla vai mitä nuo nyt ovatkaan, niin että jokainen osa olisi omalla rivillään textareassa.

Textarean koodi on seuraava:

<?php
    //PHP, PHP
    $file = file($kalafile);
    $rules = str_replace("###", "\n", $file[3]);
    $rules = str_replace("::hipsu::", "'", $rules);
    ?><br>
HÖTÖMÖLÖ HÖTÖMÖLÖ...
<textarea name="area" rows=5 cols=27 wrap="off"><?php echo $rules; ?></textarea><br><br>

Ja vastaanotossa koetetaan tallentaa tiedosto seuraavasti:

<?php
    //PHP, PHP
    $jea = str_replace(",", ", ", $_POST["text3"]);
    $ppl = str_replace(",  ", ", ", $jea);
    $area = stripslashes($_POST["area"]);
    $area = str_replace("'", "::hipsu::", $area);
    $area = str_replace("\n", "###", $area);
    $area = str_replace("\n", "###", $area);
    $area = str_replace("\n\n", "###", $area);
    $area = str_replace("\n###", "", $area);
    $info = stripslashes($_POST["info"]);
    $info = str_replace("'", "::hipsu::", $info);
    $kahwa = fopen($kalafile, "w+");
    $fillu = $_POST["text1"]."\n".
             $_POST["text2"]."\n".
             $jea."\n".
             $area."\n".
             $info;
    fwrite($kahwa, $fillu);
    fclose($kahwa);
    echo "Onnistui!!";
?>

Jonka jälkeen mikäli en poistaa tyhjää riviä textareassa, tiedosto näyttää seuraavalta:

Tekstiä
Lisää tekstiä
lista, listaa, listoja, listat, listalla, listalta
juttu nummero yksi
###ja khaksi
###kolmaskin vielä
###
Tekstiä tekstiä...

Kuitenkin tiedoston jalostelu näyttää tiedoston oikein jos otan rivin pois, mutta yksi ylimääräinen listaelementti kummittelee listassa, mitä ilmeisemmin tuon ylimääräisen ###:n takia, ja kauheasta str_replace -tykityksestä varmaan huomaatte että kyllä on yritetty. ;)

En tiedä palvelimen asetuksia, mutta palvelin on SourceForge, eli jos jollain on tietos serverin säännöistä, niin tiedätte sitten mikä on mahdollista...

Ideoita, ratkaisuja? Kiitos jo etukäteen!

Gugu [16.03.2005 19:12:14]

#

Kokeileppa:

<?php
    //PHP, PHP
    $jea = str_replace(",", ", ", $_POST["text3"]);
    $ppl = str_replace(",  ", ", ", $jea);
    $area = stripslashes($_POST["area"]);
    $area = str_replace("'", "::hipsu::", $area);
    $area = str_replace("\n", "###", $area);
    $area = str_replace("\r", "", $area);
    $area = str_replace("\n\n", "###", $area);
    $area = str_replace("\n###", "", $area);
    $info = stripslashes($_POST["info"]);
    $info = str_replace("'", "::hipsu::", $info);
    $kahwa = fopen($kalafile, "w+");
    $fillu = $_POST["text1"]."\n".
             $_POST["text2"]."\n".
             $jea."\n".
             $area."\n".
             $info;
    fwrite($kahwa, $fillu);
    fclose($kahwa);
    echo "Onnistui!!";
?>

HellCome [16.03.2005 20:20:19]

#

Aiheesta poiketen ajattelin kuitenkin ilmaista ihmetykseni "echo"n käyttöön "print" komennon sijaan. Meikämanne kun on oppinut käyttämään printtiä rivien tulostukseen PHP:ssä ja echoa tuolla aivan jossain muualla (jos sielläkään). Tapakysymys vai käytännönkysymys?

ajv [16.03.2005 20:40:14]

#

Tapakysymyshän tuo on. Käytännän merkitystä tuolla ei taida olla. Muutama pieni ero niillä kuitenkin on:

<?php
echo print ""; //tulostaa 1, sillä print palauttaa aina 1
//toisin päin ei toimi, sillä echo ei palauta mitään arvoa
//ja tämän takia echo taitaa olla aavistuksen verran nopeampi

echo "Tämä on tosi pitkä lause eikä mahdu editorini yhdelle riville, mutta e",
     "choa käyttämällä voin tämän lauseen pätkäistä vaikka neljälle riville p",
     "ilkulla erottaen kuitenkaan tulostamatta rivinvaihtoja. Sen sijaan pri",
     "nt():lle en voi syöttää kuin yhden argumentin";
?>

Tuolle echon argumenttimäärälle, en ole keksinyt mitään muuta järkevää selitystä.
Lisäksi echo:ssa on neljä kirjainta print:n viiden sijaan, joten pidemmän päälle näppäimien kuluminen hidastuu :)

SysRq868 [16.03.2005 20:54:07]

#

Gugu: eipä toiminut, haamu listaobjekti on siellä vieläkin! :(

EDIT: mikäli /n -> /r oli ainoa editti...

Gugu [16.03.2005 21:57:19]

#

Jaa'a aika mystinen. Kokeileppa piruuttaan laittaa

<?php
$fillu = htmlspecialchars($fillu);
fwrite($kahwa, $fillu);
fclose($kahwa);
echo "Onnistui!!";
?>

Mitä se tuosta tulostaa.

sooda [17.03.2005 08:21:38]

#

ajv: entäs sit näin

<?
print "moi jee " .
      "pots moks" .
      ", huomaa että nää on yhtä samaa stringiä (.-operaattori" .
      " yhdistää merkkijonot yhdeksi)";
?>

Eikös ton pitäisi toimia myös? Echolla käytän tota pistettä usein.

SysRq868 [20.03.2005 17:49:16]

#

Juu ei toimi htmlspecialchars myöskään... :(

ajv [20.03.2005 18:00:01]

#

sooda: Kyllä, kieltämättä tuo ajaa täysin saman asian. Eli aika turha ominaisuus tuo rajoittamaton argumenttien määrä :/ Ikinä sitä en ole edes käyttänyt.


Sivun alkuun

Vastaus

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

Tietoa sivustosta