PHP: заменить символы и сделать исключения (preg_replace) - PullRequest
1 голос
/ 21 сентября 2010

Как мне:

  • заменить символы в слове, используя preg_replace(), но сделать исключение, если они являются частью определенное слово.
  • заменить заглавные буквы на замена заглавными буквами, даже если замена строчными и тисками наоборот.

пример:

$string = 'Newton, Einstein and Edison. end';  
echo preg_replace('/n/i', '<b>n</b>', $string); 

из: n ewto n , Ei n stei n a n d Ediso п . е * 1 025 * N д
до: N ewto n , Ei n stei n a n d Ediso n . конец

В этом случае я хочу, чтобы все n буквы были заменены, если они не являются частью слова end И Newton не должно изменяться на newton

1 Ответ

1 голос
/ 21 сентября 2010
echo preg_replace('/((?<!\be)n|n(?!d\b))/i', '<b>\1</b>', $string);

Соответствует любой букве 'n', которой не предшествует [граница слова + e] или за которой не следует [граница слова +].

Общий случай: /((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i'

...