Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    Eliminare/Sostituire Porzione di Testo

    Buongiorno,
    vorrei sapere se esiste una funzione simile all'str_replace ma indicando la parte di testo da cui iniziare a cancellare/sostituire e la parte di testo in cui finire la sostituzione/cancellazione...
    Grazie

  2. #2
    Con preg_replace() puoi usare una espressione regolare per identificare la porzione di stringa da sostituire, in alternativa puoi usare un doppio explode() per isolare il testo da sostituire.

  3. #3
    Ho letto del preg_replace() ma non credo sia adatto... A me serve qualcosa che si adatti, tipo prendendo una cosa del genere:
    Anno costruzione: 01.69 - 12.73

    Potenza: 101 kW / 138 CV

    Cilindri: 4

    Cilindrata: 1565 cc³ / 1.6 l
    Io devo andare a prendermi i valori in automatico, tipo 01.69, 12.73, 101, 138 e 1565... Come fare?
    Ultima modifica di Luigi636; 11-01-2016 a 19:34

  4. #4
    Quote Originariamente inviata da Luigi636 Visualizza il messaggio
    Ho letto del preg_replace() ma non credo sia adatto... A me serve qualcosa che si adatti
    E si vede che hai letto male, preg_replace() è la best practice, il doppio explode è uno stratagemma utile se non si conoscono le regex.

    Ti posto un esempio pratico:

    Codice PHP:
    $string='Anno costruzione: 01.69 - 12.73
    Potenza: 101 kW / 138 CV
    Cilindri: 4
    Cilindrata: 1565 cc³ / 1.6 l'
    ;
     
    echo 
    preg_replace'/Cilindri: \d+/'''$string); 

  5. #5
    Ok, farò così... Perchè non esiste un metodo che mi permetta di prendere ad esempio un valore che è tra Potenza: e kW...?

  6. #6
    Codice PHP:
    <?php
    $txt 
    "Potenza: 101 kW / 138 CV";
    $regex "/Potenza: ([0-9]+) kW/i";
    preg_match_all($regex$txt$risultato);
    echo 
    $risultato[1][0];
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Codice PHP:
    <?php
    $txt 
    "Potenza: 101 kW / 138 CV";
    $regex "/Potenza: ([0-9]+) kW/i";
    preg_match_all($regex$txt$risultato);
    echo 
    $risultato[1][0];
    ?>
    Ok, funziona perfettamente.. Ora però vorrei capirne il funzionamento.. Gli slash fanno da delimitatori, mentre la d, la i, a cosa servono di preciso? e il + dopo il [0-9]?

  8. #8
    La i sta per "case-insensitive" per cui non vi è differenza tra maiuscole e minuscole. Il + indica "uno o più" (deve essere presente almeno un carattere), così come * sta per "zero o più" ecc.

    Per approfondire l'argomento puoi dare una letta alle espressioni regolari ed alla funzione preg_match()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Quote Originariamente inviata da Luigi636 Visualizza il messaggio
    Ok, funziona perfettamente.. Ora però vorrei capirne il funzionamento.. Gli slash fanno da delimitatori, mentre la d, la i, a cosa servono di preciso? e il + dopo il [0-9]?
    \d sta per "digit" serve ad identificare le cifre, così come [0-9]

  10. #10
    Ok.. Ora leggo a fondo, nel frattempo mi spiegate perchè quel $risultato[1][0]? Cosa significa? Avevo pensato ad un prelievo all'indietro ma invertendo l'1 e lo 0 non funziona...

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.