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.