Kirjoittaja Aihe: Otsikon uudistaminen nettisivulla php:n avulla  (Luettu 2613 kertaa)

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Otsikon uudistaminen nettisivulla php:n avulla
« : 12.05.24 - klo:15.07 »
php:llä pitäisi korvata pikku pätkä nettisivun tekstiä. Tämä versio ei näytä toimivan

Koodia: [Valitse]

<?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(&#39;index2.html&#39;);
$newBody1 replaceVariable($body"333 "" 444" ,$var); 
file_put_contents(&#39;index3.html&#39;, $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

Koodia: [Valitse]
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.


« Viimeksi muokattu: 13.05.24 - klo:21.11 kirjoittanut teele »

Jere Sumell

  • Käyttäjä
  • Viestejä: 742
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Vs: Otsikon uudistaminen nettisivulla php:n avulla
« Vastaus #1 : 13.06.24 - klo:20.00 »
Onko pakko nimenomaan PHP:llä korvata otsikko? Javascripti melkein tehokkaampi ja yksinkertaisempi toteutuskielenä.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

Jere Sumell

  • Käyttäjä
  • Viestejä: 742
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Vs: Otsikon uudistaminen nettisivulla php:n avulla
« Vastaus #2 : 13.06.24 - klo:20.16 »
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.
Koodia: [Valitse]
<!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>
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Vs: Otsikon uudistaminen nettisivulla php:n avulla
« Vastaus #3 : 15.06.24 - klo:10.10 »

Kiitos esismerkistä, pitääpä katsoa javascript-vaihtoehtoa  :)