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

teele

  • Käyttäjä
  • Viestejä: 824
    • 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 »