Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Aggiungere una parola su una riga

    Avrei bisogno di modificare una pagina statica aggiungendo una parola su una riga, a seconda del contesto. Ho provato a fare qualcosa tipo
    Codice PHP:
    $parte_comune ereg_replace('"button"><a href="index.php?'$pagina'"curbutton"><a href="index.php?'$pagina$parte_comune); 
    che dovrebbe rimpiazzare una riga tipo
    codice:
    <li class="button"><a href="index.php?articoli">Articoli
    con
    codice:
    <li class="curbutton"><a href="index.php?articoli">Articoli
    (posto che il valore di $pagina sia "articoli").

    Il problema è che ho richiamato il contenuto della pagina tramite
    Codice PHP:
    $parte_comune file_get_contents("comune.html"); 
    e sembra che ci siano problemi a fare rimpiazzi di parti di testo contenenti apici.

    Sarebbe più pratico (e più elegante) dire a PHP:
    1) Trova una riga in cui compare la parola "button"
    2) Verifica se su quella riga compare la parola $pagina
    3) In caso affermativo sostituisci il "button" su quella riga con "curbutton"
    Eviterei così le virgolette e avrei una cosa che si capisce, a costo di avere paio di istruzioni in più.

    C'è modo di fare questo?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595

    Re: Aggiungere una parola su una riga

    Originariamente inviato da Donald
    Il problema è che ho richiamato il contenuto della pagina tramite
    Codice PHP:
    $parte_comune file_get_contents("comune.html"); 
    e sembra che ci siano problemi a fare rimpiazzi di parti di testo contenenti apici.

    Sarebbe più pratico (e più elegante) dire a PHP:
    1) Trova una riga in cui compare la parola "button"
    2) Verifica se su quella riga compare la parola $pagina
    3) In caso affermativo sostituisci il "button" su quella riga con "curbutton"
    Eviterei così le virgolette e avrei una cosa che si capisce, a costo di avere paio di istruzioni in più.

    C'è modo di fare questo?
    Una possibile soluzione
    Codice PHP:
    // suddivide $parte_comune in "righe" come hai chiesto
    $righe explode("\r\n",$parte_comune);
    // Analizza ogni singola riga
    foreach($righe as $key=>$value)
    {
      
    // vefica che la stringa contenuta in $pagina e la stringa "button" siano nella riga
      
    if((strpos($pagina,$value) !== false and strpos("\"button\"",$value) !== false)
      {
         
    // sostituisce nella riga "button" con "curbutton"
         
    $righe[$key] = str_replace("\"button\"","\"curbutton\"",$value);
      }
    }
    // Ricrea la stringa risultato partendo dall'array
    $parte_comune_risultato implode("\r\n",$righe); 
    Tutto sta nel sostituire il doppio apice " con \" quando viene usato a sua volta all'interno di doppi apici oppure (ancora più semplice) utilizzare gli apici singoli
    Codice PHP:
    $righe[$key] = str_replace('"button"','"curbutton"',$value); 

  4. #4
    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?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    sei sicuro che la variabile $pagina sia correttamente valorizzata?

  6. #6
    sì, ho provato a stamparla. In ogni caso non mi funziona neppure se lascio solo il controllo su "button".

    Ho fatto la prova e anche
    Codice PHP:
    if(strpos("ipp","pippo") !== false
    mi viene ignorato... Stessa cosa se uso strstr. Eppure secondo la documentazione di strpos dovrebbe funzionare...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Siamo due polli!!!
    La stringa da cercare va DOPO!!!
    strpos("pippo","ipp")

    Vado all'agoletto a vergognarmi

  8. #8
    E io che mi sono letto pure la documentazione con tutte le varianti possibili e non me ne sono accorto..

    Grazie di tutto
    Ciao


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.