Regex получает несколько частей строки, а затем заменяет все новой строкой

У меня есть такая строка:

$string1 = "asdfgsdfgsdf[quote=user9 postID=345]sdfgsdfgsdfgdsfg";

Я хочу получить все символы между "quote = " и " " в $ chars1, затем между "postID = " и " " в $ chars2 и, наконец, я хочу изменить все символы (включая) "[quote" на "]" в другой строке $string2='_test_';

Так что в конце концов я должен получить $chars1 = "user9";, $chars2 = "345";, и преобразовал $ string1

$string1 = "asdfgsdfgsdf_test_sdfgsdfgsdfgdsfg";

Как я могу это сделать ?

Прежде чем спрашивать Как я могу это сделать?, вы должны спросить Что я сделал? и действовать соответственно.

revo 01.05.2018 12:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

$string1 = "asdfgsdfgsdf[quote=user9 postID=345]sdfgsdfgsdfgdsfg";

$string1 = preg_replace_callback (
   '/\[quote=(\S*)\s+postID=([^]\s]*)[^]]*]/',
   function($m) use(&$chars1, &$chars2) {
      $chars1 = $m[1];
      $chars2 = $m[2];
      return "_test_";
   },
   $string1
);

var_dump($string1, $chars1, $chars2);

Выход:

string(34) "asdfgsdfgsdf_test_sdfgsdfgsdfgdsfg"
string(5) "user9"
string(3) "345"

Другие вопросы по теме