Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Yksinkertainen replace

SysRq868 [19.09.2004 15:55:47]

#

Ö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 &lt;:t < -merkeiksi, ja tulostaa valmiin version.

Tulin itse helppoon tulokseen:

<?php
$src = include("temps/0.txt");
$realsrc = str_replace("&lt;", "<", $src);
echo $realsrc;
?>

...muttei vörkkiny (yllätys yllätys). Mikä on vikana/miten sen saa toimimaan?

T.M. [19.09.2004 15:57:00]

#

<?php
$src = file_get_contents("temps/0.txt");
$realsrc = str_replace("&lt;", "<", $src);
echo $realsrc;
?>

Antti Laaksonen [19.09.2004 16:01:54]

#

Minkä takia muuten <-merkkien pitää olla tuossa muodossa sivupohjassa?

SysRq868 [19.09.2004 16:05:02]

#

Antti: http://koti.mbnet.fi/funfonex/w/templates.php

EDIT: Äh... seuraava ongelma:

<?php
$src = file_get_contents("temps/0.txt");
$realsrc = str_replace("&lt;", "<", $src);
$realsrc = str_replace("kuvat/", "temps/00/", $realsrc);
$realsrc = str_replace("&amp;", "&", $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.

ajv [19.09.2004 18:32:12]

#

Luultavasti siksi, koska ne tulkitaan muuttujiksi. Muuta noi heittomerkit (") hipsuiksi ('), niin merkkijono menee sellaisenaan parserin läpi, eikä etsi siitä muuttujia.

SysRq868 [19.09.2004 18:48:22]

#

JES!!! Kiitos ajv!

leftover [19.09.2004 19:02:08]

#

Ja nyt kun alkaa olemaan tuota konvertoitavaa, suosittelisin käyttämään str_replacen array-tukea hyväksi:

<?php
$alkup = array (
   '&lt;',
   'kuvat/',
   '&amp;',
   '<?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 :)

Vastaus

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

Tietoa sivustosta