@iolon

Как на PHP разбить строку вида «параметр: значени:е» на массив ("параметр" => "значени:е")?

Есть задача разбить строку вида "параметр: значени:е" на массив ("параметр" => "значени:е").
Разделитель - первый символ ":".

Понимаю, что надо делать через регулярные выражения, но как брать только первое двоеточие, а второе отправлять в "значение"...
  • Вопрос задан
  • 403 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
explode(':', $sInput, 2);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iit
@iit
TeamLead + php/js разработчик
Если через регэспы - то используй ленивый квантификатор, но если нет желания делать через регэкспы то stpos + substr будет за глаза.
Ответ написан
Комментировать
mlnkv
@mlnkv
JavaScript Developer
Можно как то так попробовать:
<?php

$sting = "name: John Doe
age: 25
role: admin
property_1: 1000
property_2: 2000
property_3: 3000
property_4: 
property_5: 5000
";

preg_match_all("/(\w+): *(\w*)/", $sting, $matches);

echo "<pre>";

$result = array();

foreach ($matches[1] as $key => $val) {
  $result[$val] = $matches[2][$key];
}

print_r($result);
/*
array(
    [name] => John
    [age] => 25
    [role] => admin
    [property_1] => 1000
    [property_2] => 2000
    [property_3] => 3000
    [property_4] => 
    [property_5] => 5000
)
*/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы