• User Attivo

    Sostituzione parole

    Salve, volevo chiedervi un'altro consiglio prima di andare a dormire 🙂
    Ipotizzando di avere una parola molto lunga, è possibile sostituirne solo una parte? Ad esempio ho la parola "soprammobile" e voglio sostituire solo la parte "ammo".

    Leggendo sul forum trovato la funzione php str_replace. Sapreste indicarmi qualcosa che possa essermi utile a ottenere ciò?


  • ModSenior

    Ciao the_dream,

    se ho ben capito, è la soluzione al tuo problema.
    Trovi degli esempi qui.


  • User Attivo

    Si lo avevo guardato pure io ieri sera dopo aver postato il topic...
    Il problema è che la mia parola iniziare è composta da una parte fissa e da una varibile, mi spiego con un esempio.

    [indirizzo:partevariabile]

    La parte fissa è una parte che conosco ed è ben definita (colore rosso). Mentre la parte variabile è composta da 8 caratteri che vengono generati in modo totalmente casuale dal codice php (colore verde). La parte fissa sono riuscito a farla sostituire, mentre la parte variabile, che dovrei eliminare dalla parola, non so come fare.

    Esempio pratico:

    [castelli:9iow9fh5]
    [castelli:9iow9fh5]


  • User

    Beh io direi:
    echo(substr($stringa,0,-8));
    guarda se è quel che vuoi 😉


  • User Attivo

    Ma a me non serve l'eco 😕
    Al massimo dovrei legare il tutto a una variabile 😕


  • User Attivo

    Questo dovrebbe fare al caso tuo:

    $tuavar='[castelli:9iow9fh5]';
    $tuavar=preg_replace("/^[([a-zA-Z]+):([a-zA-Z0-9]+)]$/","$1",$tuavar); //restituisce $tuavar='castelli'
    $tuavar=preg_replace("/^[([a-zA-Z]+):([a-zA-Z0-9]+)]$/","[$1:]",$tuavar); //restituisce $tuavar='[castelli:]';
    $tuavar=preg_replace("/^[([a-zA-Z]+):([a-zA-Z0-9]+)]$/","$2",$tuavar); //restituisce $tuavar='9iow9fh5';
    ```Ti ho messo 3 istruzioni che estraggono informazioni diverse, scegli quella che estrae la parte che ti interessa e togli (o commenta) le altre.
    
    Ciao,
    Luca Bartoli

  • User Attivo

    Grazie mille Luca per il codice, cosa mi consiglieresti se questa parola si trovasse assieme a delle altre??, cioè: --> [castelli:9iow9fh5] si trova nelle Marche <--


  • User

    @the_dream said:

    Ma a me non serve l'eco 😕
    Al massimo dovrei legare il tutto a una variabile 😕

    A te cos'è che non serve?
    Se dovevi estrsarre solo la parte "castelli" quello è quello che ti serviva o.O
    Non lo stampi con l'echo ma lo salvi in una varibile.
    Se è in mezzo ad altre parole, devi usare un'espressione regolare


  • User Attivo

    I caratteri "^" e "$" in quella stringa strana indicano l'inizio e la fine della stringa. Per far si che vengano considerati testi di quel tipo, a prescindere da dove si trovino (inizio, fine, in mezzo alla stringa) è sufficiente rimuoverli.

    Per farti un esempio:

    $tuavar=preg_replace("/^[([a-zA-Z]+):([a-zA-Z0-9]+)]$/","$1",$tuavar); //restituisce $tuavar='castelli'
    ```diventa:
    

    $tuavar=preg_replace("/[([a-zA-Z]+):([a-zA-Z0-9]+)]/","$1",$tuavar); //restituisce $tuavar='castelli'