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

    sostituire testo tra due precise stringhe con preg_replace

    Ho un file di testo con questo contenuto:
    mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....
    Vorrei che v_rainman venisse sostituito con altri nomi del tipo v_mount o v_merry o altri.
    Sto provando con un pattern del tipo:
    codice:
    '/mp3[.*?]mp3/' --- '/^mp3[.*?]mp3/' --- '/^mp3=([.*?]).mp3'/
    o altre combinazioni per cercare di intercettare la stringa che si trova tra i due mp3 ma non ci riesco.
    Qualcuno sa dirmi come modificare le regex che sto usando?
    Grazie per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prova cosi.
    Codice PHP:
    $pattern '/mp3=(.*)\.mp3/';
    $foo     "mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....";
    preg_match_all($pattern,$foo,$arr2);
    print_r($arr2[1]); 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    ciao badaze e grazie per la risposta.
    La tua espressione regolare assolve, però solo parzialmente. Ho modificato così:
    Codice PHP:
    $file "mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....";
    $brani "v_mount.mp3";
    $pattern '/mp3=(.*)\.mp3/';
    $replacement $brani;
    $stringa_modificata preg_replace($pattern$replacement$file); 
    Questo mi restituisce però un risultato errato:
    v_mount.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....
    invece dovrebbe restituirmi
    mp3=v_mount.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0
    Per il momento ho risolto con una pezza non troppo corretta messa al $replacement
    Codice PHP:
    $file "mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....";
    $brani "v_mount.mp3";
    $pattern '/mp3=(.*)\.mp3/';
    $replacement 'mp3='.$brani;
    $stringa_modificata preg_replace($pattern$replacement$file); 
    Se si potesse fare meglio sarebbe più corretto.
    Comunque grazie per il suggerimento
    Ultima modifica di micdas; 11-11-2014 a 16:40

  4. #4
    PS
    Ho potuto constatare che usando il preg_match_all() come da te suggerito mi viene restituita la stringa giusta
    Codice PHP:
    $pattern '/mp3=(.*)\.mp3/';
    $file     "mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....";
    preg_match_all($pattern,$file,$arr2);
    print_r($arr2[1]); 
    Restituisce giustamente
    Array ( [0] => v_rainman )

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Cosi.

    Codice PHP:
    $file        "mp3=v_rainman.mp3 width=200 height=20 autoplay=0 autoload=0 loop=0....";
    $brani       "v_mount.mp3";
    $pattern     '/(mp3=)(.*)\.mp3/';
    $replacement $brani;
    $stringa_modificata preg_replace($pattern"\\1$replacement"$file);  
    PRINT 
    $stringa_modificata
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Grazie badaze
    ora funziona anche col preg_replace().
    Praticamente occorre creare due gruppi ed usarne uno così come è ed il secondo gruppo rimpiazzato dala stringa desiderata.
    Sto cominciando a capire qualcosa


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 © 2024 vBulletin Solutions, Inc. All rights reserved.