Öhh... nytten tuli mieleen väsätä noita sivupohjia...
temps/0.txt, temps/1.txt, temps/2.txt, temps/3.txt.. jne
niikuin
<html> <head> <title>....jne
Sitten haluaisin, että joku php-filu hakee temps/2.txt:n sisällön, vaihtaa <:t < -merkeiksi, ja tulostaa valmiin version.
Tulin itse helppoon tulokseen:
<?php $src = include("temps/0.txt"); $realsrc = str_replace("<", "<", $src); echo $realsrc; ?>
...muttei vörkkiny (yllätys yllätys). Mikä on vikana/miten sen saa toimimaan?
<?php $src = file_get_contents("temps/0.txt"); $realsrc = str_replace("<", "<", $src); echo $realsrc; ?>
Minkä takia muuten <-merkkien pitää olla tuossa muodossa sivupohjassa?
Antti: http://koti.mbnet.fi/funfonex/w/templates.php
EDIT: Äh... seuraava ongelma:
<?php $src = file_get_contents("temps/0.txt"); $realsrc = str_replace("<", "<", $src); $realsrc = str_replace("kuvat/", "temps/00/", $realsrc); $realsrc = str_replace("&", "&", $realsrc); $realsrc = str_replace("<?php echo $_POST[otsikko]; ?>", "Otsikko", $realsrc); $realsrc = str_replace("<?php echo $_POST[slogan]; ?>", "Slogan", $realsrc); $realsrc = str_replace("<?php echo $_POST[nimi]; ?>", "Tekijä", $realsrc); echo $realsrc; ?>
Noita php-post-juttuja se ei vaihda. Miksi? Kiitos.
Luultavasti siksi, koska ne tulkitaan muuttujiksi. Muuta noi heittomerkit (") hipsuiksi ('), niin merkkijono menee sellaisenaan parserin läpi, eikä etsi siitä muuttujia.
JES!!! Kiitos ajv!
Ja nyt kun alkaa olemaan tuota konvertoitavaa, suosittelisin käyttämään str_replacen array-tukea hyväksi:
<?php $alkup = array ( '<', 'kuvat/', '&', '<?php echo $_POST[otsikko]; ?>', '<?php echo $_POST[slogan]; ?>', '<?php echo $_POST[nimi]; ?>' ); $muutettu = array ( '<', 'temps/00/', '&', 'Otsikko', 'Slogan', 'Tekijä' ); $src = file_get_contents("temps/0.txt"); $realsrc = str_replace($alkup, $muutettu, $src); echo $realsrc; ?>
Koodi hieman pitenee, mutta samalla nopeutuu ja IMO helpottuu käsittely. Eräs mitä kannattaa myös harkita, on preg_replacella muuttujiksi muuttaminen. Esimerkki:
<?php $sisalto = "Terve ##nimi##, lempivärisi on ##vari##"; $nimi = $_POST['nimi']; $vari = $_POST['vari']; echo preg_replace("/##(\w*)##/Ue", "$\\1", $sisalto); // Tulostaa esim. "Hei Jaska, lempivärisi on oranssi ?>
Esimerkit ovat testaamattomia, mutta idean kiinnisaamiseksi varmaan tarpeeksi toimivat :D
EDIT: Mukava foorumi kun kosahtaa virheellisiin preg_lauseisiin :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.