Tiedostoon "tiedosto1.txt" on kirjoitettu muuttujia (esim.$a = a).
Tiedostossa "tiedosto1_echo.txt" on pelkät muuttujien nimet ilman arvoja (esim. $a). Tämä tiedosto olisi tarkoitus printata ruudulle niin että ruudulla lukisi a, eikä $a.
Ruudulle kuitenkin tulostuu "$a = a $a", eikä muuttuja $a:n arvo.
<?php include("tiedosto1.txt"); $i = 0; $tt = fopen("tiedosto1_echo.txt", "r"); while (!feof($tt)) { $rivi = fgets($tt, 1024); echo "$rivi"; $i++; } fclose($tt); ?>
En osannut paremmin selittää, mutta toivottavasti joku ymmärsi probleemani.
pitänee olla tuo tiedosto1.txt => tiedosto1.php, en oo kyl satavarma, mut luulisin.
Lisää siihen eteen toinen $-merkki, niin se tulostaa muuttujassa olevan nimisen muuttujan arvon. Muistaakseni.
<?php $a = 10; $rivi = '$a'; echo $rivi." = ".$$rivi; // Tulostaa "$a = 10" ?>
Eipäs, pikku virhe, metabolix. $rivi pitäisi olla 'a' eikä '$a' niin se löytää sen..
En joko ymmärtänyt ohjeitanne tai sitten te ette ole ymmärtäneet minun ongelmaani.
Tuosta tiedosto1.txt:stä pitäisi saada muuttujat ($nimi = Kalle; $sukunimi = Kala) sivun testi1.php muuttujiksi, sen sijaan että ruudulla lukisi $nimi = Kalle; $sukunimi = Kala, toivottavasti joku ymmärsi tai saisi minut ymmärtämään :/
Tiedostossa on siis monia muuttujia, jotka vain läsähtävät ruudulle. Tahdon saada ne muuttujiksi, en tulostaa.
Miksi ne muuttujat on tuossa formaatissa siinä tekstitiedostossa? Onko niiden välttämätöntä olla noin?
Itse näes olen käyttänyt parse_ini_file funktiota jos olen tarvinnut vastaavaa toimintoa.
Kyllä se onnistuu tuolla sanomallasikin tavalla. Ensin explodetat rivin " = " suhteen $arrayhyn, ja merkkaat $$array[0] = $array[1]. Noin se voisi toimia, en ole ihan 100% varma enkä jaksa testata.
Eipä ollut mukamas parempaakaan tekemistä niin tein siitä esimerkin:
tiedosto.txt
$argh = 500 $b = 300 $c = 400
muuttujaesimerkki.php
<?php $file = file('tiedosto.txt'); //Luetaan tiedosto taulukkoon, eritelty riveinä foreach ($file as $rivi) { //Käydään taulukko lävitse $rivi = explode(" = ", $rivi, 2); //Erotetaan rivistä muuttujan nimi ja sen arvo, exploden arvolla 2 muuttujan arvo voi sisältää myös = merkinnän $muuttuja = substr($rivi[0], 1); //Muuttujasta otetaan dollarinmerkki edestä pois $$muuttuja = $rivi[1]; //Ja kahdella $ merkillä tehdään ne muuttujat } print $argh; //Tulostaa tiedostossa tiedosto.txt säädetyn $argh:in arvon ?>
Kiitos, kiitos, kiitos! Vielä olisi paljonkin kysyttävää, mutta koska en halua kysyä aivan kaikkea muilta en kysy.
Porukkaa näytti alkavan ärsyttää - ainakin jos muuttujien nimiin on luottaminen:)
hoituis varmaan helpommin ku laittais tiedosto.txt:hen php-tagit ja sit includettaa sen.
Ei hoidu tämä ongelma.
No mikä ei luonnistu?
Itse asiassa tuo ei toimi niin kuin tahtoisin (tuo JTS:n) kun tarkemmin katsoin.
*huoh*
Haluan, että tiedosto1.txt:n sisältö vastaa sitä, että sivulle kirjoitettaisiin:
$nimi = Kalle; $sukunimi = Kala;
Ilmeisesti kukaan ei ole osannut ajatellakaan näin hölmöä kysymystä :)
Miten tuon saa siis tehtyä?
Jos nyt oikein ymmärsin JTS:n koodinpätkä vain poistaa muuttujat, jolloin tiedostoon olisi yhtä hyvin voinut kirjoittaa suoraan Kalle ja Kala.
Ei, vaan tuo koodinpätkä hakee muuttujat tiedosto.txt:stä.
Eli kun kirjoitat tiedosto.txt:hen rivin: $paino = 50
Ajat skriptin, niin sinulla on sitten muuttuja $paino käytettävissä. Eli "print $paino+1;" tulostaisi "51".
Ja en ymmärrä enään yhtään mitä oikein haluat sen tekevän.
Ongelma muuten olikin juuri siinä, etten tiedä muuttujien nimiä... ei mitään muuta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.