Как из строки вытащить значения? (PHP)
Есть сторка например 'id=22 tmpl=default' как разделить/вытащить значения?
мой не рабочий вариант(
$id = trim(preg_replace("/.*?id.*?=/i", "", trim($string)));
$tmpl = trim(preg_replace("/.*?tmpl.*?=/i", "", trim($string)));
Ответы (2 шт):
Автор решения: Maxim Timakov
→ Ссылка
Можно воспользоваться preg_match_all
<?php
$str = 'id=22 tmpl=default';
$result = [];
$rexp = '/([\w]+)=([^\s]+)/u';
$status = preg_match_all($rexp, $str, $result, PREG_SET_ORDER);
if ($status !== FALSE)
{
echo "Found $status matches:" . PHP_EOL;
print_r($result);
}
else
{
echo "Error in test";
}
Found 2 matches:
Array
(
[0] => Array
(
[0] => id=22
[1] => id
[2] => 22
)
[1] => Array
(
[0] => tmpl=default
[1] => tmpl
[2] => default
)
)
Автор решения: Rikky
→ Ссылка
Вот так:
<?php
$unformated = 'id=22 tmpl=default'; //исходная строка. данные разделены пробелами
$exploded = explode(' ', $unformated); //сначала разделим все пары ключ-значение
$data = []; //пустой массив, мы его заполним данными
foreach ($exploded as $row) { //пробежимся по всем разделенным данным
$keyvalue = explode('=', $row); //разделим по знаку =
$data[$keyvalue[0]] = $keyvalue[1]; //добавим в массив ключ до = значение после =
}
// Вот что получилось
echo 'Теперь у нас массив данных:<br>';
print_r($data); //выводим массив
echo "<hr>Можем вывести значение по ключу: значение tmpl в массиве равно: ".$data['tmpl'];
?>