Как разобрать такой текст?

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

tovar|куртка||nal|111||beznal|222||price|333||dostavka|444||prod|Имя

Чтобы можно было вывести на страницу так

Товар: куртка
Наличные: 111
...

Ответы (2 шт):

Автор решения: Denis640Kb

Вашу задачу можно решить следующим способом:

Добавил комментарии.

$Str = 'tovar|куртка||nal|111||beznal|222||price|333||dostavka|444||prod|Имяv';
$t_name_a = ['tovar'=>'Товар','nal'=>'Наличные','beznal'=>'Безналичные','price'=> 'Стоимость','dostavka'=>'Доставка','prod'=>'Прод']; // Массив для перевода ключа в название
$t1 = explode('||',$Str); // Сначала разбиваем массив по ||
if($t1 and count($t1)>1){ // Если есть значение и их больше 1
    $Result_str = '';
    foreach ($t1 as $item){ // Для каждого элемента
        $N_n = explode('|',$item); // Разбиваем значение по |
        $n_name = (isset($t_name_a[$N_n[0]]))?$t_name_a[$N_n[0]]:''; // Проверяем первую часть в массиве перевода названия
        $n_val = (isset($N_n[1]) and !empty($N_n[1]))?$N_n[1]:''; // Если есть значение записываем
        $Result_str .= $n_name.': '.$n_val.'<br>'; // Добавляем в строку
    }
    print_r($Result_str); // Вывод строки
}

Вывод:

Товар: куртка
Наличные: 111
Безналичные: 222
Стоимость: 333
Доставка: 444
Прод: Имяv
→ Ссылка
Автор решения: teran

если без избыточных усложнений то

$str = "tovar|куртка||nal|111||beznal|222||price|333||dostavka|444||prod|Имя";
$data = explode('||', $str);
$result = [];
foreach ($data as $item) {
    [$key, $value] = explode('|', $item);
    $result[$key] = $value;
}
print_r($result);
→ Ссылка