PHP regex لإزالة متعددة ?-علامات
سؤال
أواجه صعوبة في الخروج مع الصحيح regex سلسلة لإزالة تسلسل متعددة ?الأحرف.أريد أن استبدال واحد أو أكثر المتعاقبة ؟ مع واحدة؟, ولكن أحرف الهروب هو الهروب مني.
مثال الإدخال:
هو هذا الشيء؟??أو ماذا ؟ ؟ ؟
الإخراج المطلوب:
هو هذا الشيء ؟ أو ماذا ؟
أنا باستخدام preg_replace() في PHP.
المحلول
preg_replace('{\?+}', '?', 'Is this thing on??? or what???');
هذا هو, لديك فقط للهروب من علامة استفهام ، زائد في "\?+" يعني أننا استبدال كل حالة مع واحد أو أكثر من الشخصيات ، على الرغم من أنني أشك "\?{2,}" قد يكون أفضل وأكثر كفاءة (استبدال كل حالة مع اثنين أو أكثر من علامة استفهام الشخصيات.
نصائح أخرى
preg_replace( '{\\?+}', '?', $text );
ينبغي أن تفعل ذلك.
تحتاج إلى الهروب من علامة استفهام نفسها بخط مائل ثم الهروب مائل نفسها مع آخر مائل.
إنه في مثل هذه الحالات حيث C#'s الحرفية strings هي لطيفة.
هذا يجب أن تعمل (لقد اختبرت ذلك):
preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)
هذا ينبغي أن تفعل ذلك
preg_replace('/(\?+)/m', '?', 'what is going in here????');
علامة الاستفهام يحتاج إلى أن هرب و m هو متعدد الوضعية.
هذا موقع على شبكة الإنترنت جيدة أن تحاول ذلك في http://regex.larsolavtorvik.com/
str_replace('??', '?', 'Replace ??? in this text');
هل حاولت نمط
[?]+
مع استبدال ?
?