• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема с Preg_replace

  • Автор темы clayton
  • Дата начала
C

clayton

Здравствуйте уважаемые форумчане, имеется вопрос такого характера: есть тектовый файл, в котором необходимо заменить 1-но слово на другое, например:
PHP:
$pattern = "/value/";
$new_val = "some_word";
$text = preg_replace($pattern, $new_val, $text);
Проблема заключается в том, что могут удалиться лишние слова, содержахие в себе данное слово, например: "values", "manyvalue" и прочее. Регулярное выражение типа :
PHP:
"/\s+value\s+/"
удаляет вокруг слова пробелы, что не приемлево.
Как можно решить эту проблему, возможно с помощью какого-нибудь специального регулярного выражения или какой-нибудь особености функции preg_replace?
 
V

vital

"/value\s+/"
меняйте на это, а к $new_val добавьте пробел, например.

Еще, в ашем случае я бы юзал strpos() str_replace() и т.п.
Ну или юзайте Preg_replace_callback()
и колбеке уже разбирайте, надо менять или нет..
 
A

acorn

Preg_replace в данном задании использовать только для обучения, str_replace более логичен.
 
C

clayton

Вообще, я несовсем уточнил проблемц: слово обромлять могут не только пробелы, но еще и разнообразные символы, не входящие в слово(например: ":", ".", ",", "=" и прочее).
Но проблему решил сам)), сделавши вывод что нужно всегда внимательно и до конца читать справки.
Данный казус решается с помощью использования подмасок в preg_replace, вот так получилось:
PHP:
$pattern = "/(\W{1})value(\W{1})/";
$new_val = "\$1some_word\$2";
$text = preg_replace($pattern, $new_val, $text);
Подробности описаны
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!