Birden fazla?-Işaretlerini kaldırmak için PHP regex

5 Cevap php

Ben çoklu bir dizisini kaldırmak için doğru regex dize ile geliyor sorun yaşıyorum? karakter. Birden fazla sıralı değiştirmek istiyor? Tek bir ile?, ancak hangi karakterler kaçmak için ... beni kaçıyor.

Örnek giriş:

Bu şey mi?? ya da ne??

İstenilen çıktı:

Bu şey var mı? ya da ne?

I preg_replace() PHP kullanıyorum.

5 Cevap

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

Yani sadece soru işareti kaçmak zorunda olduğunu "\? +" In artı sanıyorum ama biz, bir veya daha fazla karakter ile her örneği yerine konum anlamına gelen "\? {2}," daha iyi olacak ve olabilir İki ya da daha fazla soru işareti karakterleri ile her örneği yerine (daha verimli.

Bu (Ben test ettim) çalışması gerekir:

preg_replace('/\?+/', '?', $subject);

bu bunu yapmak gerekir

preg_replace('/(\?+)/m', '?', 'what is going in here????');

soru işareti kaçtı gereken ve m satırlı modu içindir.

Bu http://regex.larsolavtorvik.com/ azından denemek için iyi bir web sitesi oldu

Eğer desen denediniz

[?]+

değiştirilmesi ile ??

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

bunu yapmak gerekir.

Sen bir ters eğik çizgi ile soru işareti kendisi kaçış, ve sonra başka bir eğik çizgi ile ters eğik çizgi kendisini kaçmak gerekir.

Bu, C # 'ın verbatim strings hoş nerede bu gibi durumlar var.