#php #string #preg-replace
#php #строка #preg-заменить
Вопрос:
Пытаюсь использовать preg_replace для поиска строк, которые начинаются и заканчиваются косой чертой, например "/Harry/"
. (должно быть preg_replace)
Мне также нужно игнорировать регистр и убедиться, что это отдельное слово. Пока у меня есть следующее, но мне не очень повезло заставить это работать:(
$old_words[0] = '/b/Harry/b/i';
$new_words[0] = 'Wizard';
$chat = preg_replace($old_words, $new_words, $chat);
Ответ №1:
Если ваша проблема действительно заключается только в границах слова b
, тогда вы могли бы попробовать некоторые вспомогательные утверждения вместо этого:
$old_words[0] = '#(?<!w)/Harry/(?!w)#i';
Это в основном гарантирует, что никакие буквы не могут встречаться ни до, ни после косой черты.
Ответ №2:
Если вы просто хотите заменить отдельные слова, нет необходимости использовать preg_replace
. Вместо этого используйте str_ireplace (для замены без учета регистра). Однако вы можете использовать другие символы, кроме /
, в качестве разделителя для вашего регулярного выражения: #
, ~
, …