PHP регулярное выражение для удаления нескольких? -Марки - PullRequest
5 голосов
/ 26 сентября 2008

У меня проблемы с поиском правильной строки регулярного выражения для удаления последовательности, кратной? персонажи. Я хочу заменить более одного последовательного? с одним ?, но какие символы убежать ... ускользает от меня.

Пример ввода:

Эта штука включена ??? или что ???

Желаемый вывод:

Эта штука включена? или что?

Я использую preg_replace () в PHP.

Ответы [ 7 ]

9 голосов
/ 26 сентября 2008
preg_replace('{\?+}', '?', 'Is this thing on??? or what???');

То есть, вам нужно только избежать знака вопроса, плюс в "\? +" Означает, что мы заменяем каждый экземпляр одним или несколькими символами, хотя я подозреваю, что "\? {2,}" может быть еще лучше и эффективнее (заменяя каждый экземпляр двумя или более знаками вопроса.

2 голосов
/ 26 сентября 2008

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

должен это сделать.

Вам нужно экранировать сам знак вопроса с помощью обратной косой черты, а затем экранировать саму обратную косую черту с помощью другой обратной косой черты.

В таких ситуациях C дословные строки хороши.

1 голос
/ 26 сентября 2008

это должно сделать

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

знак вопроса должен быть экранирован, а m для многострочного режима.

Это был хороший веб-сайт, чтобы попробовать его на http://regex.larsolavtorvik.com/

1 голос
/ 26 сентября 2008
preg_replace('/\?{2,}/','?',$text)
1 голос
/ 26 сентября 2008

Это должно работать (я проверял это):

preg_replace('/\?+/', '?', $subject);
0 голосов
/ 26 сентября 2008
str_replace('??', '?', 'Replace ??? in this text');
0 голосов
/ 26 сентября 2008

Вы пробовали шаблон

[?]+

с заменой ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...