Purtroppo non mi funziona ancora. Per gli apici avevo provato anche a richiudere tutto con apici singoli, ma non cambiava niente. Adesso ho provato con la tua versione, e problemi di apici non dovrebbero esistere, perché mi basta sostituire la stringa "curbotton" (senza apici) a "button" (senza apici).

Il problema è che semplicemente non lo fa. Se sostituisco alla condizione di controllo una condizione vuota tipo
Codice PHP:
if(true
allora sostituisce la stringa ovunque. Ma purtroppo la condizione
Codice PHP:
if((strpos($pagina,$value) !== false) and (strpos("button",$value) !== false)) 
non sembra essere mai verificata. Neppure se tolgo "and" e controllo una sola delle due condizioni.

Il testo è correttamente suddiviso in righe perché la seguente variante
Codice PHP:
//Divido in righe
$parte_comune explode("\n",$parte_comune);
//Sostituisco lo stile del bottone per la pagina corrente
foreach($parte_comune as $key=>$value)
{
    if (
$value !== "")
    {
    echo(
" \n");
    if((
strpos($pagina$value) !== false) and (strpos("button"$value) !== false))
    {
        
$parte_comune[$key] = str_replace('button','curbutton',$value);
    }
    }
}
$parte_comune implode("\n",$parte_comune); 
fa quello che mi aspetto, cioè prima di tutta la pagina mi stampa le righe di $parte_comune una ad una come commenti (uso solo"/n" invece di "/r/n" perché sono su una macchina Linux).

Qualcuno ha un'idea su cosa ci sia di sbagliato nella condizione di controllo?