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

    str_replace e valore indefinito

    Ciao a tutti

    Sto usando str_replace per sostituire un campo input con un campo select per la realizzazione di un plugin per un cms.

    Il problema è che il campo input può avere un valore qualsiasi all'interno di value="??"

    io devo riuscire ad estrarre quel valore per poi confrontarlo con altri ed inoltre devo riuscire a sostituire comunque il campo input anche se è presente quel valore...

    quindi:

    $string='<html>... <input name="esempio" id="esempio1" value="" /> ....</html>';
    $find="<input name="esempio" id="esempio1" value="" />";
    $replace="<select name="esempio" id="esempio1">....</select>";

    qui sarebbe facile:

    str_replace ($find,$replace,$string);

    e se invece nella pagina al valore value fosse assegnato qualcosa come faccio a ottenere lo stesso risultato?

    $string='<html>... <input name="esempio" id="esempio1" value="testo di esempio" /> ....</html>';
    $find="<input name="esempio" id="esempio1" value="?????" />";
    $replace="<select name="esempio" id="esempio1">....</select>";


    ho provato anche con preg_replace

    ma no riesco ad ottenere un risultato.


    qualche idea?

  2. #2
    Non sarebbe pià semplice utilizzare un'espressione regolare?

    Magari utilizzando preg_replace_callback(). In questo modo puoi gestire efficacemente anche la sostituzione con la select oltre all'estrazione dell'attributo value (qualunque esso sia).

  3. #3
    se non ho capito male

    $valore="xx";

    $string='<html>... <input name="esempio" id="esempio1" value="$valore" /> ....</html>';
    $find="<input name="esempio" id="esempio1" value="$valore"/>";
    $replace="<select name="esempio" id="esempio1">....</select>";

    dando un valore a (per esempio) $valore si valorizza sia su $string che su $find cosi sono identiche e si possono sostituire!!!

  4. #4
    @roberto. il problema è che $valore io non so quale sia.

    @filippo. L'idea è buona. anche io avevo pensato all'uso delle espressioni regolari.
    Tu consigli preg_replace_callback

    Io avevo pensato, come ho scritto, al solo preg_replace, ma non mi stampa nulla.

    Questa era l'istruzione per il $find che ho utilizzato.


    $find="/<input name="esempio" id="esempio1" value="(\w+)" //>/";

    Sbaglio qualcosa?

    Potresti gentilmente scrivermi, magari anche con un commentino, come useresti tu la callback e prechè sarebbe meglio quella? Oltre al fatto che magari funziona!!

  5. #5
    Studiati questo codice:

    Codice PHP:
    <?php 

    $select 
    range(15);

    function 
    my_replace($matches) {
        global 
    $select;
        
        
    $result '<select name="esempio" id="esempio1">';
        foreach (
    $select as $value) {
            
    $selected = ($value == $matches[1]) ? 'selected="selected"' '';
            
    $result .= "<option {$selected}>{$value}</option>";
        }
        
    $result .= '</select>';
        return 
    $result;
    }

    $string '<html>... <input name="esempio" id="esempio1" value="3" /> ....</html>';
    $pattern '#<input name="esempio" id="esempio1" value="([^"]*)" />#si';

    $string preg_replace_callback($pattern'my_replace'$string);

    print(
    $string);

    ?>

  6. #6

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.