2012-04-14 2 views
1

Я получил эту строку:preg_replace: Как не удалить всю деталь?

$string = "hello123hello237ihello523"; 

Я хочу, чтобы найти «о», за которым следует число. Затем я хочу удалить только «o».

Я пытался:

preg_replace("/kl[0-9]/", "", $string); 

Проблема заключается в том, что это удаляет число, а также. Я просто хочу удалить «o». Есть идеи?

ответ

2

использование положительный предпросмотр:

echo preg_replace("/o(?=[0-9])/", "", $string); 

Для получения дополнительной информации: http://www.regular-expressions.info/lookaround.html

Еще один вариант:

echo preg_replace("/o([0-9])/", "\\1", $string); 

Это заменит о [число] с [число]

+1

Согласно документам, '$ 1' предпочтительнее' \\ 1' с PHP 4.0.4. – cmbuckley

+0

@cbuckley, вы правы, но «предпочтительнее» не означает, что \\ 1 устарел. Поскольку большинство других языков используют синтаксис \\ 1, я предпочитаю придерживаться его :) – strkol

0

Вы можете использовать обратные ссылки:

echo preg_replace('/o([0-9])/', '$1', $string); 

См. the documentation для получения информации о привязке к подшаблонам.

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