$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]']
Если это строка из одной строки, вы можете использовать preg_match
и регулярное выражение, такое как это
preg_match('/^\/(?P<command>\w+)\s(?P<name>[^@]+)\@(?P<domain>.+?)$/', '/start [email protected]', $match );
Но в зависимости от изменения данных вам может понадобиться немного отрегулировать regx. Это выводы
start
info
example.com
но он также будет иметь числовой индекс в массиве.
https://regex101.com/r/jN8gP7/1
Просто, чтобы немного разобраться, на английском.
Ведущий ^
это начало строки, затем названный захват ( \w
(любой a-z A-Z 0-9 _)) затем пробел \s
затем назвали захват (что угодно, кроме знака @t [^@]
), то знак @t @
тогда имя захвачено .+?
к концу $
)
Это захватит что-нибудь в этом формате,
(abc123_) пробел (что угодно, кроме @) @ (что угодно)
Других решений пока нет …