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.