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

    [RegExp] Sostituire mantenendo il case.

    Salve a tutti,
    posto nel forum php ma la domanda è cross-language.
    Ho un pattern da cercare all'interno di una stringa e da sostiurlo con una serie di marcatori (che possono essere tag per evidenziare al stringa o altro).

    Devo effettuare la sostituzione mantenendo il case presente nella stringa, ma ovviamente cercando case insensitive.

    Esempio:

    Target = "Mezzo"
    Stringa = "Nel mezzo del cammin di nostra vita"

    Risultato = "Nel [mark]mezzo[/mark] del cammin di nostra vita"

    e non "Nel [mark]Mezzo[/mark] del cammin di nostra vita"

    Che espressione regolare uso?

    Grazie a chi mi aiuterà.
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    codice:
    $target = "Mezzo";
    $string = "Nel mezzo MEZZO MeZZo del cammin di nostra vita";
    $ret = preg_replace("/(".preg_quote($target).")/i","[mark]$1[mark]", $string);
    
    echo $ret;

  3. #3
    Grazie della tua risposta!
    C'è qualcosa che non usi funzioni tipiche di php? Dovrei usare questo sistema anche con js e altri linguaggi
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Con javascript lo fai allo stesso modo:
    codice:
    <script>
    function preg_quote(str) {
        return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
    }
    
    function mark(data, search)
    {
        return data.replace( new RegExp( "(" + preg_quote(search) + ")" , 'ig' ), "[mark]$1[/mark]" );
    }
    
    document.write(mark("Nel mezzo MEZZO MeZZo del cammin di nostra vita", "Mezzo"));
    </script>
    C'è qualcosa che non usi funzioni tipiche di php?
    Mi stai chiedendo un pezzo di codice valido in tutti i linguaggi?

  5. #5
    Chiedevo se fosse qualcosa che si potessse fare usando soltanto le espressioni regolari. In questo modo usando il pattern giusto avrei potuto passarlo in ogni linguaggio! La funzione JS che mi hai scritto usa preg_quote. Ma non è una funzione php? Su un sito Asp.net per esempio non potrei usarla vero?
    Forse qualcosa non mi è chiaro se non è così, ti ringrazio se mi spieghi questa cosa
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  6. #6
    Ok ho letto male! Funziona alla perfezione. Mi spieghi solo la funzione quote in js? Vorrei capire bene il codice
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    La funzione JS che mi hai scritto usa preg_quote. Ma non è una funzione php?
    L'ho definita lì sopra. L'ho trovata qui, se ti interessa: https://github.com/kvz/phpjs/blob/ma.../preg_quote.js

    Con asp.NET:
    codice:
    using System.Text.RegularExpressions;
    
    string myString = "Nel mezzo MEZZO MeZZo del cammin di nostra vita";
    string strReplace = "[mark]$0[/mark]";
    
    myString = Regex.Replace(myString,
            Regex.Escape("Mezzo"),
            strReplace,
            RegexOptions.IgnoreCase);
    In questo modo usando il pattern giusto avrei potuto passarlo in ogni linguaggio!
    Toglitelo dalla testa, non c'è neanche un motivo per farlo. A che pro? Poi i linguaggi non hanno tutti lo stesso livello di astrazione, ne utilizzano le stesse librerie e gli stessi moduli.
    Ultima modifica di .Kurt; 13-12-2014 a 23:41

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.