Регулярное выражение PHP для удаления нескольких?-метки
Вопрос
У меня возникли проблемы с поиском правильной строки регулярного выражения для удаления последовательности из нескольких?Персонажи.Я хочу заменить более одного последовательного?с одним ?, но какие символы использовать, чтобы escape...is убежать от меня.
Пример ввода:
Эта штука включена???или что???
Желаемый результат:
Эта штука включена?или что?
Я использую preg_replace() в PHP.
Решение
preg_replace('{\?+}', '?', 'Is this thing on??? or what???');
То есть вам нужно только избежать вопросительного знака, плюс в "\?+" означает, что мы заменяем каждый экземпляр одним или несколькими символами, хотя я подозреваю, что "\?{2,}" может быть даже лучше и эффективнее (замена каждого экземпляра двумя или более символами вопросительного знака.
Другие советы
preg_replace( '{\\?+}', '?', $text );
должен это сделать.
Вам нужно экранировать сам вопросительный знак обратной косой чертой, а затем экранировать саму обратную косую черту другой обратной косой чертой.
Это ситуации, подобные этой, когда C # дословные строки они милые.
Это должно сработать (я это протестировал):
preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)
это должно сработать
preg_replace('/(\?+)/m', '?', 'what is going in here????');
вопросительный знак должен быть экранирован, а буква "м" предназначена для многострочного режима.
Это был хороший веб-сайт, на котором можно было это попробовать http://regex.larsolavtorvik.com/
str_replace('??', '?', 'Replace ??? in this text');
Вы пробовали использовать этот шаблон
[?]+
с заменой ?
?