PHP заменить регулярное выражение - PullRequest
4 голосов
/ 19 мая 2010

Мне нужно использовать php, чтобы добавить пробел между точкой и следующим словом / буквой, когда их нет.

Например, «Это предложение. Это следующее». должно стать «Это предложение. Это следующее». Обратите внимание на добавленное пространство после первого периода.

Моя проблема в том, что даже если я смогу создать регулярное выражение, которое находит каждую точку, за которой следует буква, как мне заменить эту точку на "точка + пробел" и сохранить букву?

Также необходимо сохранить регистр букв, нижний или верхний.

Спасибо за ваш вклад.

Ответы [ 3 ]

9 голосов
/ 19 мая 2010
$regex = '#\.(\w)#';
$string = preg_replace($regex, '. \1', $string);

Если вы хотите захватывать больше, чем просто периоды, вы можете сделать:

preg_replace('#(\.|,|\?|!)(\w)#', '\1 \2', $string);

Просто добавьте символы, которые вы хотите заменить, в первый блок (). Не забудьте экранировать специальные символы (http://us.php.net/manual/en/regexp.reference.meta.php)

1 голос
/ 19 мая 2010
$str = "Will you please slow down?You're gonna kill someone.Seriously!";
echo preg_replace('/(!|\?|\.)([^\s\.\?!])/', '\1 \2', $str);
0 голосов
/ 19 мая 2010
$str = "This is a sentence.This is the next one.";
echo preg_replace("#\.(\S)#", '. \1', $str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...