Разбирать подстроку из строки, которая начинается с определенного слова

У меня есть строка из нескольких строк $comment, который выглядит как:

@Description: some description.
@Feature/UseCase: some features.
@InputParameter: some input param.
@ChangedParameter: some changed param.
@NewOutputParameter: some output param.
@Comments/Note: some notes.

Я хочу преобразовать его в шесть разных строк, чтобы после преобразования он выглядел следующим образом: $description = 'some description', $features = 'some features' и так далее. Как я могу этого достичь?

я пытался explode, но это не работает для меня. Я новичок в PHP и был бы признателен за любую помощь.

0

Решение

Ты можешь использовать explode дважды, один с @ разделитель, чтобы получить поля, а затем с : разделитель для получения содержимого каждого поля …

$fields = explode("@",$comment);

$description = trim(explode(":",$fields[1])[1]);
$features = trim(explode(":",$fields[2])[1]);
$inputparameter = trim(explode(":",$fields[3])[1]);
....

Вы можете немного упростить это, используя array_map функция для получения содержимого поля …

$fields = array_slice(explode("@",$comment),1);
$fieldcontents = array_map(function($v) { return trim(explode(":",$v)[1]); }, $fields);

$description = $fieldcontents[0];
$features = $fieldcontents[1];
$inputparameter = $fieldcontents[2];
....
1

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

Краткое решение с использованием preg_replace, explode а также list функции:

$comment = '
@Description: some description.
@Feature/UseCase: some features.
@InputParameter: some input param.
@ChangedParameter: some changed param.
@NewOutputParameter: some output param.
@Comments/Note: some notes.';

list($description, $feature, $input_param, $changed_param, $new_param, $note) =
explode('.', preg_replace('/\s*@[^:]+:\s*([^.]+.)/', '$1', $comment));

var_dump($description, $feature, $input_param, $changed_param, $new_param, $note);

Вывод (для всех созданных переменных):

string(16) "some description"string(13) "some features"string(16) "some input param"string(18) "some changed param"string(17) "some output param"string(10) "some notes"
0

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