Как сохранить пробелы с помощью preg_replace, если совпадение включает их?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сохранить пробелы с помощью preg_replace, если совпадение включает их?

Сообщение Anonymous »

Итак, у меня возникли проблемы с некоторым регулярным выражением PHP.
Вот мой шаблон: /(?:^|\W)(the)(?:$|\W) /i
Этот шаблон будет соответствовать любому 'the', если он находится в начале строки, конце строки или в середине. Однако он не будет соответствовать буквам «t», «h» и «e», если они встречаются подряд в таких словах, как «там»< /p>
Все в порядке, пока мы не заменяем часть preg_replace

Код: Выделить всё

// All you need to know about $message is that it is a string of user input
// The content passed in will be sentences like "The fish jumped over the bridge"
// The resulting replacement should be "foo fish jumped over foo bridge"
// The current result would be "foofish jumped overfoobridge"

$message = "The fish jumped over the bridge"; // Would usually be user input, or from POST
$secretMsg = preg_replace('/(?:^|\W)(the)(?:$|\W)/i', 'foo', $message);
echo $secretMsg; // Should be  "foo fish jumped over foo bridge"
Я просмотрел руководство по регулярным выражениям PHP, но не нашел ничего полезного. Я даже пытался заменить '-foo-', а затем заменить все '-' на ' '. Однако это, очевидно, приведет к появлению ненужных пробелов в начале и конце строк. Кроме того, он по-прежнему не будет правильно сопоставлять строки, в которых два идут подряд, например «the». Эта строка будет соответствовать "foothe".
Как видно из моего текущего шаблона, я поигрался с группами без захвата и захвата. Я также поигрался с обратными ссылками, но все равно безуспешно.
На этом этапе я в растерянности и нуждаюсь в совете от кого-то, кто понимает регулярные выражения больше, чем я. Я также хочу отметить, что я понимаю, что в этом выражении будут сопоставляться пробелы, и Я ХОЧУ, чтобы они сопоставлялись, но НЕ ХОЧУ, чтобы они были заменены.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ncludes-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»