Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    159

    Preg_replace rimuovere testo tra due caratteri

    Ciao a tutti, ho delle difficoltà con il preg_replace.
    Io ho una stringa che è un testo in javascript, composta da più righe e molti caratteri. Con il preg_replace vorrei eliminare tutti i commenti che si trovano tra /* e */ e quelli in una riga quindi i caratteri che si trovano tra // e la fine della riga.
    Ho provato in questo modo:
    Codice PHP:
    preg_replace("/\/[.]*\//"""$text); 
    ma così mi sostituisce solo i doppi slash

    Qualcuno potrebbe aiutarmi?
    Grazie in anticipo
    Work hard. Code harder.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,868
    Ciao, forse si trova già qualcosa sul web ma ho voluto provare personalmente ad impostare qualcosa.

    Prova in questo modo:
    codice:
    preg_replace("/(\/\*.*?\*\/\n?)|(\/\/[^\n]*\n)/s", "", $text);
    Nel caso, fai vari test e fammi sapere se funziona o se riscontri problemi.
    Ultima modifica di KillerWorm; 04-09-2016 a 02:17
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web.
    Ti resta... humm spè

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,105
    Intanto segnalo questo sito su cui testare le regexp senza dover far girare ogni volta lo script dopo le modifiche alla regola, fa tutto in tempo reale e ti spiega anche che significa la regola che si è scritta, così è anche più facile capire cosa si sta sbagliando

    https://regex101.com/
    Earth2: 3QCNSPFQUH

  4. #4
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    159
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Intanto segnalo questo sito su cui testare le regexp senza dover far girare ogni volta lo script dopo le modifiche alla regola, fa tutto in tempo reale e ti spiega anche che significa la regola che si è scritta, così è anche più facile capire cosa si sta sbagliando

    https://regex101.com/
    Grazie! L'ho scoperto ieri cercando un po' su Google, strumento molto utile!

    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, forse si trova già qualcosa sul web ma ho voluto provare personalmente ad impostare qualcosa.

    Prova in questo modo:
    codice:
    preg_replace("/(\/\*.*?\*\/\n?)|(\/\/[^\n]*\n)/s", "", $text);
    Nel caso, fai vari test e fammi sapere se funziona o se riscontri problemi.
    Grazie della risposta! Questo codice funziona e mi toglie il primo commento compreso tra /* e */, ma se nel testo ce ne fossero più di uno?
    Work hard. Code harder.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    112
    Prova cosi:

    preg_replace ("\/\*(.*)\*\/", "", $text);

    Esso dovrebbe intercettare tutto ciò che è racchiuso tra /* e */ e cancellarlo.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,868
    Grazie della risposta! Questo codice funziona e mi toglie il primo commento compreso tra /* e */, ma se nel testo ce ne fossero più di uno?
    Hai provato ad eseguirlo sul tuo progetto?

    Se lo testi con regex101 dovrai aggiungere "g" (che sta per global) tra i flag (assieme ad "s").
    Ad ogni modo, la funzione preg_replace dovrebbe avere implicito il modificatore globale.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web.
    Ti resta... humm spè

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  7. #7
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    159
    Quote Originariamente inviata da semplice77 Visualizza il messaggio
    Prova cosi:

    preg_replace ("\/\*(.*)\*\/", "", $text);

    Esso dovrebbe intercettare tutto ciò che è racchiuso tra /* e */ e cancellarlo.
    Mi dà questo errore:

    Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\check-jquery\index.php on line 24

    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Hai provato ad eseguirlo sul tuo progetto?

    Se lo testi con regex101 dovrai aggiungere "g" (che sta per global) tra i flag (assieme ad "s").
    Ad ogni modo, la funzione preg_replace dovrebbe avere implicito il modificatore globale.
    Ops, sì hai ragione, l'ho provato sul mio progetto ed effettivamente funziona alla grande!
    Grazie mille, risolto!
    Work hard. Code harder.

Tag per questa discussione

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