Domanda

Ho problemi a trovare la stringa regex corretta per rimuovere una sequenza di multipli? personaggi. Voglio sostituire più di una sequenza? con un singolo?, ma quali personaggi scappare ... mi sta sfuggendo.

Esempio di input:

  

È questa cosa su ??? o cosa ???

Uscita desiderata:

  

Questa cosa è accesa? o cosa?

Sto usando preg_replace () in PHP.

È stato utile?

Soluzione

preg_replace('{\?+}', '?', 'Is this thing on??? or what???');

Cioè, devi solo sfuggire al punto interrogativo, il plus in " \? + " significa che stiamo sostituendo ogni istanza con uno o più caratteri, anche se sospetto che " \? {2,} " potrebbe essere ancora migliore e più efficiente (sostituendo ogni istanza con due o più caratteri punto interrogativo.

Altri suggerimenti

preg_replace ('{\\? +}', '?', $ text);

dovrebbe farlo.

Devi sfuggire al punto interrogativo stesso con una barra rovesciata, quindi sfuggire alla barra rovesciata stessa con un'altra barra rovesciata.

Sono situazioni come questa in cui stringhe testuali sono carini.

Questo dovrebbe funzionare (l'ho testato):

preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)
str_replace('??', '?', 'Replace ??? in this text');

Hai provato il modello

[?]+

con la sostituzione di ? ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top