Как удалить! знак из середины и конца слова, но не удалять в начале слова?

Чтобы удалить знак "!" из середины и конца слова, но не удалять его в начале слова, можно воспользоваться регулярными выражениями и функцией preg_replace() в языке PHP.

Вот пример кода, который демонстрирует этот принцип:

$str = "Привет! Как дела!? Здравствуйте!";
$result = preg_replace("/(?<!S)!(?!S)/", "", $str);
echo $result;

В данном примере мы используем регулярное выражение /(?<!S)!(?!S)/, которое означает следующее:

- (?<!S): отрицательное предположение о наличии не пробельного символа перед знаком "!"
- !: знак "!"
- (?!S): отрицательное предположение о наличии не пробельного символа после знака "!"

Эти два условия вместе гарантируют, что мы удаляем только те знаки "!", которые не имеют пробельных символов вокруг себя, то есть не находятся в начале слова.

Функция preg_replace() затем принимает данное регулярное выражение и заменяет все соответствующие совпадения пустой строкой.

Результат будет следующим:

Привет! Как дела? Здравствуйте!

Таким образом, знаки "!" были удалены только из середины и конца слов, не затрагивая знаки "!" в начале слов.