Mitenköhän PHP:llä saisi väritettyä tekstitiedostossa olevan tekstin niin, että eri merkeillä olisi omat värinsä.
Elikäs osaan kyllä include:lla tuoda foobar.txt:n php-scriptiin, mutta en osaa laittaa eri merkeille omia värejänsä. Merkit ja värit olisivat: ~ = blue, r = blue, p = yellow, ^ = grey, h = cyan, H = magenta, f = green, F = green ja s = brown. Mulla on pieni koodinpätkä joka ei toimi, jos joku viittisi korjata sen tai kirjoittaa kokonaan uuden niin olisin kiitollinen.
<?php colors["p"] = "yellow"; colors["f"] = "green"; colors["F"] = "green"; colors["r"] = "blue"; colors["~"] = "blue"; colors["h"] = "cyan"; colors["H"] = "magenta"; colors["^"] = "grey"; colors["s"] = "brown"; function replaceChars($str) { return "<font color=\"{colors[$str]}\">$str</font>"; } $filename = "outworld.txt"; $dataFile = fopen($filename, "r"); if ( $dataFile ) { while (!feof($dataFile)) { $buffer = fgets($dataFile, 4096); echo replaceChars($buffer); } fclose($dataFile); } else { die("fopen failed for $filename"); } ?>
Ohjelman voi tehdä monella tavalla, mutta tässä on yksi ratkaisu:
<?php // kirjaimet ja niiden värit $varit["i"] = "red"; $varit["v"] = "green"; $varit["c"] = "blue"; // luetaan koko tiedosto muuttujaan $teksti = file_get_contents("varitys.txt"); // muutetaan rivinvaihdot HTML-muotoon $teksti = str_replace("\n", "<br>", $teksti); // käydään läpi kaikki merkit for ($i = 0; $i < strlen($teksti); $i++) { // tulostetaan merkki tarvittaessa väritettynä if ($varit[$teksti[$i]]) { echo "<font color=\"{$varit[$teksti[$i]]}\">{$teksti[$i]}</font>"; } else { echo $teksti[$i]; } } ?>
Kirjaimia käsitellään yksi kerrallaan, jotta font-tagiin kuuluvia kirjaimia ei vahingossa väritettäisi.
Kiitos. Toi ei kyllä ihan kunnolla toimi...tulee r> ylimääräisenä. http://tapi0.emdia.fi/qm/outworld.php
tapi0 kirjoitti:
Kiitos. Toi ei kyllä ihan kunnolla toimi...tulee r> ylimääräisenä. http://tapi0.emdia.fi/qm/outworld.php
Niin tulee, koska Antin koodi muuttaa \n-rivinvaihdon HTML-rivinvaihdoksi joka myös tulkitaan tekstiksi eli sekin käydään tuossa läpi jolloin HTML-tagi tuhoutuu.
Joo, tuo asia jäi minulta huomaamatta. Tässä on korjattu versio, jossa rivinvaihdot muutetaan vasta tulostusvaiheessa.
<?php // kirjaimet ja niiden värit $varit["i"] = "red"; $varit["v"] = "green"; $varit["r"] = "blue"; // luetaan koko tiedosto muuttujaan $teksti = file_get_contents("varitys.txt"); // käydään läpi kaikki merkit for ($i = 0; $i < strlen($teksti); $i++) { // tulostetaan merkki tarvittaessa väritettynä if ($varit[$teksti[$i]]) { echo "<font color=\"{$varit[$teksti[$i]]}\">{$teksti[$i]}</font>"; } else if ($teksti[$i] == "\n") { echo "<br>"; } else { echo $teksti[$i]; } } ?>
Suuri kiitos...nyt toimii täydellisesti :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.