Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 12.05.24 - klo:15.07
-
php:llä pitäisi korvata pikku pätkä nettisivun tekstiä. Tämä versio ei näytä toimivan
<?php
function replaceVariable($body, $s, $e, $replacement)
{
while(strpos($body, $s) )
{
$start = strpos($body, $s);
$end = strrpos($body, $e);
$body = substr_replace($body, $replacement , $start+4, $end-$start+4);
}
return $body;
}
$var = "333 uusiotsikko 444";
$body = file_get_contents('index2.html');
$newBody1 = replaceVariable($body, "333 ", " 444" ,$var);
file_put_contents('index3.html', $newBody1 );
?>
Ongelma vaikuttaa olevevan se, että korvattavan alussa on sama tokeni kuin korvaavassa tekstissä vaikka lisäyspaikan alkua on kokeilun takia jopa siirretty 4 merkkiä eteen päin.
Käytännön ongelma voisi olla vaikka tällainen
<h1> vanha otsikko </h1>
halautaan korvata nettisivulla tekstillä
<h1> uusi otsikko </h1>
Kokeilujen mukaan ongelma on se, että korvattava pätkä alkaa samalla tokenillä kuin korvaava. Kyse lienee niin yleisestä toimesta, että sen pitänee hoitua helposti eli tässä yrittämässäni versiossa on varmaan jotain periaatteellista häikkää.
Miten oikeassa nettimaailmassa uusittaisiin php:llä joku otsikko nettisivulla.
Muokk.
Kahden tokenin rajoittaman tekstin korvaaminen näyttäisi onnistuvan kikkailun avulla
function replaceVariable($body, $s, $e, $replacement)
{
while(strpos($body, $s) )
{
$start = strpos($body, $s);
$end = strrpos($body, $e);
$body = substr_replace($body, $replacement , $start, $end-$start+4);
}
return $body;
}
$var = "555 uusiotsikko 444";
$body = file_get_contents('index2.html');
$newBody1 = replaceVariable($body, "333 ", " 444" ,$var); //////// äääääääääääääääääääääääääääääääääääääää
$var = "333 uusiotsikko 444";
$newBody2 = replaceVariable($newBody1, "555 ", " 444" ,$var);
file_put_contents('index3.html', $newBody2 );
Mutta luulisin, että asia on niin yleinen, että sen hoitamiseen ei tarvita kikkailua. En oikein uskaltaisi tällaisessa tilanteessa laittaa säiettä ratkaistuksi.
-
Onko pakko nimenomaan PHP:llä korvata otsikko? Javascripti melkein tehokkaampi ja yksinkertaisempi toteutuskielenä.
-
Vaikka nyt on kesä jo kohta jussi painaa päälle, pitää sitä kait kesän aikana jonkinmoisen ohjelmointitauon jälkeen ohjelmoida pari riviä.
HTML5/Javascript -ratkaisuni malliksi.
<!DOCTYPE html>
<html lang="fi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
function vaihdaotsikko()
{
var uusiOtsikko = "Vaihdettu otsikko";
otsikko.innerHTML = uusiOtsikko;
}
</script>
</head>
<body>
<h1 id="otsikko">Nykyinen otsikko</h1>
<form><input type="button" name="btn" value="Vaihda otsikko" onclick="vaihdaotsikko()">
</form>
</body>
</html>
-
Kiitos esismerkistä, pitääpä katsoa javascript-vaihtoehtoa :)