Мне нужна наша помощь для замены моего регулярного выражения.
Мне нужно заменить одно слово ИЛИ одно предложение между с preg_replace в php
Но мое регулярное выражение не работает: 🙁
"/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/"
Пытался:
$sContent = preg_replace("/^(?:\s|\.|,)($sWord)(?:\s|\.|,|\!|\?|\:|;)$/",
'<a href="#" data-toggle="tooltip" title="' . htmlspecialchars($sDefinition) . '">' . $sWord . '</a>',
$sContent);
Ваше регулярное выражение привязанного в начале и в конце все строка ввода (^
а также $
в начале / конце вашего регулярного выражения). Вы должны удалить их, чтобы регулярное выражение работало.
Тогда для односимвольных альтернатив лучше использовать класс персонажа вместо чередования:
"/[\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);
Других решений пока нет …