If the lines change as much as you mean, then it will be practically impossible to do exactly. And it is in any language; nothing about PHP will become simpler or harder: it is a problem with natural language analysis, and it is very difficult to automate.
Regex (using the preg_split() function) can do the job if the lines are regular, but not for random lines like these. Each of them is its own special case, so you need to write a separate bit of code for each of them ... but in this case, you could just do the splitting manually.
The only way to get this kind of data without manual intervention is if the data provider (i.e. the site that you linked in the comments?) Can provide its preliminary formatting. Perhaps they already have data divided into the required format in their own product database, so if they are ready to provide it, this will work for you.
They would almost certainly want to charge for the data, but given the amount of effort involved in doing this manually, it was probably worth it.
source share