Как переписать строку и получить параметры по шаблону в Stack Overflow

$string = '/start [email protected]';
$pattern = '/{command} {name}@{domain}';

получить параметры массива в php, как в примере ниже:

['command' => 'start', 'name' => 'info', 'domain' => 'example.com']

а также

$string = '/start [email protected]';
$pattern = '/{command} {email}';
['command' => 'start', 'email' => '[email protected]']

а также

$string = '/start [email protected]';
$pattern = '{command} {email}';
['command' => '/start', 'email' => '[email protected]']

0

Решение

Если это строка из одной строки, вы можете использовать preg_match и регулярное выражение, такое как это

  preg_match('/^\/(?P<command>\w+)\s(?P<name>[^@]+)\@(?P<domain>.+?)$/', '/start [email protected]', $match );

Но в зависимости от изменения данных вам может понадобиться немного отрегулировать regx. Это выводы

  • команда [1-6] start
  • имя [7-11] info
  • домен [12-23] example.com

но он также будет иметь числовой индекс в массиве.

https://regex101.com/r/jN8gP7/1

Просто, чтобы немного разобраться, на английском.

Ведущий ^ это начало строки, затем названный захват ( \w (любой a-z A-Z 0-9 _)) затем пробел \s затем назвали захват (что угодно, кроме знака @t [^@] ), то знак @t @тогда имя захвачено .+? к концу $ )

Это захватит что-нибудь в этом формате,

(abc123_) пробел (что угодно, кроме @) @ (что угодно)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]