Регулярное выражение заменить слово между символами

Мне нужна наша помощь для замены моего регулярного выражения.
Мне нужно заменить одно слово ИЛИ одно предложение между с preg_replace в php

  • начать с . или, или пробел, или ничего
  • и в конце. или или ! или же ? или или ; или пробел

Но мое регулярное выражение не работает: 🙁

"/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/"

Пытался:

$sContent = preg_replace("/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/",
'<a href="#" data-toggle="tooltip" title="' . htmlspecialchars($sDefinition) . '">' . $sWord . '</a>',
$sContent);

0

Решение

Ваше регулярное выражение привязанного в начале и в конце все строка ввода (^ а также $ в начале / конце вашего регулярного выражения). Вы должны удалить их, чтобы регулярное выражение работало.

Тогда для односимвольных альтернатив лучше использовать класс персонажа вместо чередования:

"/[\s.,]($sWord)[\s.,!?:;]/"

Если вам нужно сохранить символы-разделители для операции замены, заключите их в группа захвата:

"/([\s.,])($sWord)([\s.,!?:;])/"

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

$sContent = preg_replace("/([\s.,])($sWord)([\s.,!?:;])/",
'$1<a href="#" data-toggle="tooltip" title="' . htmlspecialchars($sDefinition) . '">$2</a>$3',
$sContent);
0

Другие решения

Других решений пока нет …