2011-12-16 3 views
0

Я хотел бы добавить пробел после любой точки, найденной с помощью алфавитного или числового символа сразу после него (пробел не найден), предполагая, что следующий символ после того, как точка не является концом строки (cr, lf, ...) персонаж.Как добавить пробел после точки?

preg_replace"/.[a-z0-9]{1}/" с "/. [a-z0-9]/i"

Как я могу сделать это в PHP?

ответ

5

Вы можете использовать positive lookahead:

$str = preg_replace("/\.(?=[a-z\d])/i", ". ", $str); 

DEMO

+0

Я прочитал документ, но это немного сложно понять. Будет ли это '' # (? = [A-zA-Z \ d]) [:] # "' разрешить мне найти любой: с буквенным или цифровым символом сразу за ним? Кажется, это не работает. – Oliver

+0

Нет, ничего не будет. Lookaheads и -behinds соответствуют * позициям *, а не символам. Таким образом, в этом случае он будет соответствовать любой позиции со следующим буквенно-цифровым символом. Но двоеточие не является буквенно-цифровым символом, поэтому общее выражение не совпадает. Вам понадобится: '#: (? = [A-zA-Z \ d]) #'. Это соответствует двоеточию, только если следующий символ является буквенно-цифровым. Lookaheads и -behinds могут быть немного сложными, чтобы понять, так что не беспокойтесь, если потребуется некоторое время, чтобы обдумать его. –

+0

Итак, как я могу сделать, чтобы проверить charater, который находится непосредственно перед: one? – Oliver

2

Вы уже опубликовали почти правильный ответ

$text = preg_replace('#\.([A-Za-z0-9])#', '. $1', $text); 

должен сделать трюк

Смежные вопросы